Script.smali
.class public Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
.super Ljava/lang/Object;
.source "Script.java"
# static fields
.field public static final ALL_VERIFY_FLAGS:Ljava/util/EnumSet;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/EnumSet",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;",
">;"
}
.end annotation
.end field
.field private static final QF:[Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.field private static final log:Lorg/slf4j/Logger;
# instance fields
.field public chunks:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;",
">;"
}
.end annotation
.end field
.field public creationTimeSeconds:J
.field private program:[B
# direct methods
.method static constructor <clinit>()V
.registers 6
.prologue
const/4 v4, 0x1
const/4 v3, 0x0
const/4 v5, 0x0
.line 86
const-class v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
invoke-static {v0}, Ljava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v0
sput-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->ALL_VERIFY_FLAGS:Ljava/util/EnumSet;
.line 88
const-class v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
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/script/Script;->log:Lorg/slf4j/Logger;
.line 170
const/4 v0, 0x4
new-array v0, v0, [Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v2, 0x76
invoke-direct {v1, v2, v5, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
aput-object v1, v0, v3
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v2, 0xa9
invoke-direct {v1, v2, v5, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
aput-object v1, v0, v4
const/4 v1, 0x2
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v3, 0x88
const/16 v4, 0x17
invoke-direct {v2, v3, v5, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
aput-object v2, v0, v1
const/4 v1, 0x3
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v3, 0xac
const/16 v4, 0x18
invoke-direct {v2, v3, v5, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
aput-object v2, v0, v1
sput-object v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->QF:[Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
return-void
.end method
.method private constructor <init>()V
.registers 2
.prologue
.line 105
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2088
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 106
iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 107
return-void
.end method
.method constructor <init>(Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;",
">;)V"
}
.end annotation
.prologue
.line 110
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 111
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0, p1}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v0
iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 112
invoke-static {}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->currentTimeSeconds()J
move-result-wide v0
iput-wide v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->creationTimeSeconds:J
.line 113
return-void
.end method
.method public constructor <init>([B)V
.registers 4
.prologue
.line 120
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 121
iput-object p1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
.line 122
invoke-direct {p0, p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->parse([B)V
.line 123
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->creationTimeSeconds:J
.line 124
return-void
.end method
.method private static a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;ILcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;Ljava/util/LinkedList;IIILcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)I
.registers 23
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
"I",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;III",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
"Ljava/util/Set",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;",
">;)I"
}
.end annotation
.prologue
.line 1763
sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->STRICTENC:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p8
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1e
sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->DERSIG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
.line 1764
move-object/from16 v0, p8
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1e
sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
.line 1765
move-object/from16 v0, p8
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_37
:cond_1e
const/4 v1, 0x1
move v8, v1
.line 1766
:goto_20
sget-object v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->MINIMALDATA:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p8
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
.line 1767
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->size()I
move-result v1
const/4 v2, 0x2
if-ge v1, v2, :cond_3a
.line 1768
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "Attempted OP_CHECKMULTISIG(VERIFY) on a stack with size < 2"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1765
:cond_37
const/4 v1, 0x0
move v8, v1
goto :goto_20
.line 1769
:cond_3a
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
invoke-static {v1, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v4
.line 1770
if-ltz v4, :cond_4e
const/16 v1, 0x14
if-le v4, v1, :cond_56
.line 1771
:cond_4e
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "OP_CHECKMULTISIG(VERIFY) with pubkey count out of range"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1772
:cond_56
add-int v10, p4, v4
.line 1773
const/16 v1, 0xc9
if-le v10, v1, :cond_64
.line 1774
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "Total op count > 201 during OP_CHECKMULTISIG(VERIFY)"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1775
:cond_64
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->size()I
move-result v1
add-int/lit8 v2, v4, 0x1
if-ge v1, v2, :cond_74
.line 1776
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "Attempted OP_CHECKMULTISIG(VERIFY) on a stack with size < num_of_pubkeys + 2"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1778
:cond_74
new-instance v11, Ljava/util/LinkedList;
invoke-direct {v11}, Ljava/util/LinkedList;-><init>()V
.line 1779
const/4 v1, 0x0
move v2, v1
:goto_7b
if-ge v2, v4, :cond_8a
.line 1780
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1781
invoke-virtual {v11, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1779
add-int/lit8 v1, v2, 0x1
move v2, v1
goto :goto_7b
.line 1784
:cond_8a
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
invoke-static {v1, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v3
.line 1785
if-ltz v3, :cond_9c
if-le v3, v4, :cond_a4
.line 1786
:cond_9c
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "OP_CHECKMULTISIG(VERIFY) with sig count out of range"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1787
:cond_a4
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->size()I
move-result v1
add-int/lit8 v2, v3, 0x1
if-ge v1, v2, :cond_b4
.line 1788
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "Attempted OP_CHECKMULTISIG(VERIFY) on a stack with size < num_of_pubkeys + num_of_signatures + 3"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1790
:cond_b4
new-instance v12, Ljava/util/LinkedList;
invoke-direct {v12}, Ljava/util/LinkedList;-><init>()V
.line 1791
const/4 v1, 0x0
move v2, v1
:goto_bb
if-ge v2, v3, :cond_ca
.line 1792
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1793
invoke-virtual {v12, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1791
add-int/lit8 v1, v2, 0x1
move v2, v1
goto :goto_bb
.line 1796
:cond_ca
invoke-virtual/range {p2 .. p2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v1
.line 1797
array-length v2, v1
move/from16 v0, p5
invoke-static {v1, v0, v2}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v3
.line 1799
invoke-virtual {v12}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_d9
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_100
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1800
new-instance v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;
array-length v5, v1
add-int/lit8 v5, v5, 0x1
invoke-direct {v4, v5}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;-><init>(I)V
.line 1802
:try_start_ed
invoke-static {v4, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
:try_end_f0
.catch Ljava/io/IOException; {:try_start_ed .. :try_end_f0} :catch_f9
.line 1806
invoke-virtual {v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;->toByteArray()[B
move-result-object v1
invoke-static {v3, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v3
goto :goto_d9
.line 1803
:catch_f9
move-exception v1
.line 1804
new-instance v2, Ljava/lang/RuntimeException;
invoke-direct {v2, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v2
.line 1809
:cond_100
const/4 v9, 0x1
.line 1810
:cond_101
invoke-virtual {v12}, Ljava/util/LinkedList;->size()I
move-result v1
if-lez v1, :cond_1a7
.line 1811
invoke-virtual {v11}, Ljava/util/LinkedList;->pollFirst()Ljava/lang/Object;
move-result-object v1
move-object v7, v1
check-cast v7, [B
.line 1815
:try_start_10e
invoke-virtual {v12}, Ljava/util/LinkedList;->getFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 10194
const/4 v2, 0x0
invoke-static {v1, v8, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->a([BZZ)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;
move-result-object v13
.line 1816
invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->gM()Z
move-result v1
if-eqz v1, :cond_174
.line 1817
invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->gN()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$SigHash;
move-result-object v5
invoke-virtual {v13}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->anyoneCanPay()Z
move-result v6
move-object v1, p0
move v2, p1
move-object/from16 v4, p7
invoke-virtual/range {v1 .. v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(I[BLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$SigHash;Z)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;
move-result-object v1
.line 1819
:goto_12f
invoke-virtual {v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;->getBytes()[B
move-result-object v1
invoke-static {v1, v13, v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->a([BLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/l;[B)Z
move-result v1
if-eqz v1, :cond_13c
.line 1820
invoke-virtual {v12}, Ljava/util/LinkedList;->pollFirst()Ljava/lang/Object;
:try_end_13c
.catch Ljava/lang/Exception; {:try_start_10e .. :try_end_13c} :catch_1a5
.line 1826
:cond_13c
:goto_13c
invoke-virtual {v12}, Ljava/util/LinkedList;->size()I
move-result v1
invoke-virtual {v11}, Ljava/util/LinkedList;->size()I
move-result v2
if-le v1, v2, :cond_101
.line 1827
const/4 v1, 0x0
move v2, v1
.line 1833
:goto_148
invoke-virtual/range {p3 .. p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1834
sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->NULLDUMMY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p8
invoke-interface {v0, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_17c
array-length v3, v1
if-lez v3, :cond_17c
.line 1835
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "OP_CHECKMULTISIG(VERIFY) with non-null nulldummy: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {v1}, Ljava/util/Arrays;->toString([B)Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1817
:cond_174
:try_start_174
iget v1, v13, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->sighashFlags:I
int-to-byte v1, v1
.line 1818
invoke-virtual {p0, p1, v3, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(I[BB)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;
:try_end_17a
.catch Ljava/lang/Exception; {:try_start_174 .. :try_end_17a} :catch_1a5
move-result-object v1
goto :goto_12f
.line 1837
:cond_17c
const/16 v1, 0xae
move/from16 v0, p6
if-ne v0, v1, :cond_195
.line 1838
if-eqz v2, :cond_191
const/4 v1, 0x1
new-array v1, v1, [B
const/4 v2, 0x0
const/4 v3, 0x1
aput-byte v3, v1, v2
:goto_18b
move-object/from16 v0, p3
invoke-virtual {v0, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1843
:cond_190
return v10
.line 1838
:cond_191
const/4 v1, 0x0
new-array v1, v1, [B
goto :goto_18b
.line 1839
:cond_195
const/16 v1, 0xaf
move/from16 v0, p6
if-ne v0, v1, :cond_190
.line 1840
if-nez v2, :cond_190
.line 1841
new-instance v1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v2, "Script failed OP_CHECKMULTISIGVERIFY"
invoke-direct {v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
:catch_1a5
move-exception v1
goto :goto_13c
:cond_1a7
move v2, v9
goto :goto_148
.end method
.method private static a([BZ)Ljava/math/BigInteger;
.registers 4
.prologue
const/4 v1, 0x4
.line 818
array-length v0, p0
if-le v0, v1, :cond_c
.line 819
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Script attempted to use an integer larger than 4 bytes"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 820
:cond_c
if-eqz p1, :cond_1c
invoke-static {p0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->e([BI)Z
move-result v0
if-nez v0, :cond_1c
.line 821
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Number is not minimally encoded"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 823
:cond_1c
invoke-static {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v0
.line 824
const/4 v1, 0x0
invoke-static {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->decodeMPI([BZ)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method private static a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;JLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;Ljava/util/LinkedList;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)V
.registers 28
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
"J",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
"Ljava/util/Set",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
.line 920
.line 3952
const/4 v3, 0x0
.line 3953
const/4 v2, 0x0
.line 3955
new-instance v13, Ljava/util/LinkedList;
invoke-direct {v13}, Ljava/util/LinkedList;-><init>()V
.line 3956
new-instance v14, Ljava/util/LinkedList;
invoke-direct {v14}, Ljava/util/LinkedList;-><init>()V
.line 3957
sget-object v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->MINIMALDATA:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v15
.line 3972
move-object/from16 v0, p3
iget-object v4, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v16
move v11, v2
:cond_1d
:goto_1d
invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_c38
invoke-interface/range {v16 .. v16}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 3973
const/4 v4, 0x0
invoke-static {v4}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v4
invoke-virtual {v14, v4}, Ljava/util/LinkedList;->contains(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_64
const/4 v4, 0x1
.line 3979
:goto_35
iget v5, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-nez v5, :cond_66
.line 3980
if-eqz v4, :cond_1d
.line 3983
const/4 v2, 0x0
new-array v2, v2, [B
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
.line 4653
:goto_44
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v4
invoke-virtual {v13}, Ljava/util/LinkedList;->size()I
move-result v5
add-int/2addr v4, v5
const/16 v5, 0x3e8
if-gt v4, v5, :cond_5c
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v4
invoke-virtual {v13}, Ljava/util/LinkedList;->size()I
move-result v5
add-int/2addr v4, v5
if-gez v4, :cond_c35
.line 4654
:cond_5c
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Stack size exceeded range"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 3973
:cond_64
const/4 v4, 0x0
goto :goto_35
.line 3984
:cond_66
invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v5
if-nez v5, :cond_89
.line 3985
iget-object v5, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v5, v5
int-to-long v6, v5
const-wide/16 v8, 0x208
cmp-long v5, v6, v8
if-lez v5, :cond_7e
.line 3986
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted to push a data string larger than 520 bytes"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 3988
:cond_7e
if-eqz v4, :cond_1d
.line 3991
iget-object v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
goto :goto_44
.line 3993
:cond_89
iget v8, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
.line 3994
const/16 v5, 0x60
if-le v8, v5, :cond_9d
.line 3995
add-int/lit8 v10, v3, 0x1
.line 3996
const/16 v3, 0xc9
if-le v10, v3, :cond_9e
.line 3997
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "More script operations than is allowed"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
:cond_9d
move v10, v3
.line 4000
:cond_9e
const/16 v3, 0x65
if-eq v8, v3, :cond_a6
const/16 v3, 0x66
if-ne v8, v3, :cond_ae
.line 4001
:cond_a6
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script included OP_VERIF or OP_VERNOTIF"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4877
:cond_ae
packed-switch v8, :pswitch_data_c4e
.line 4907
:pswitch_b1
const/4 v3, 0x0
.line 4004
:goto_b2
if-eqz v3, :cond_cc
.line 4005
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script included a disabled Script Op."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4886
:pswitch_bc
const/4 v3, 0x1
goto :goto_b2
.line 4898
:pswitch_be
sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->MONOLITH_OPCODES:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_ca
const/4 v3, 0x1
goto :goto_b2
:cond_ca
const/4 v3, 0x0
goto :goto_b2
.line 4008
:cond_cc
packed-switch v8, :pswitch_data_c8a
.line 4039
:pswitch_cf
if-eqz v4, :cond_c4b
.line 4042
packed-switch v8, :pswitch_data_c9a
.line 4649
:pswitch_d4
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Script used a reserved opcode "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4010
:pswitch_e9
if-nez v4, :cond_f6
.line 4011
const/4 v2, 0x0
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v14, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v3, v10
.line 4012
goto/16 :goto_1d
.line 4014
:cond_f6
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_104
.line 4015
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_IF on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4016
:cond_104
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v14, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v3, v10
.line 4017
goto/16 :goto_1d
.line 4019
:pswitch_118
if-nez v4, :cond_125
.line 4020
const/4 v2, 0x0
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v14, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v3, v10
.line 4021
goto/16 :goto_1d
.line 4023
:cond_125
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_133
.line 4024
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NOTIF on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4025
:cond_133
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_14a
const/4 v2, 0x1
:goto_140
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v14, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v3, v10
.line 4026
goto/16 :goto_1d
.line 4025
:cond_14a
const/4 v2, 0x0
goto :goto_140
.line 4028
:pswitch_14c
invoke-virtual {v14}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-eqz v2, :cond_15a
.line 4029
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ELSE without OP_IF/NOTIF"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4030
:cond_15a
invoke-virtual {v14}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/Boolean;
invoke-virtual {v2}, Ljava/lang/Boolean;->booleanValue()Z
move-result v2
if-nez v2, :cond_171
const/4 v2, 0x1
:goto_167
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
invoke-virtual {v14, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v3, v10
.line 4031
goto/16 :goto_1d
.line 4030
:cond_171
const/4 v2, 0x0
goto :goto_167
.line 4033
:pswitch_173
invoke-virtual {v14}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-eqz v2, :cond_181
.line 4034
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ENDIF without OP_IF/NOTIF"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4035
:cond_181
invoke-virtual {v14}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move v3, v10
.line 4036
goto/16 :goto_1d
.line 4045
:pswitch_187
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4046
goto/16 :goto_44
.line 4063
:pswitch_19e
invoke-static {v8}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v2
int-to-long v2, v2
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4064
goto/16 :goto_44
:pswitch_1b8
move v2, v11
move v3, v10
.line 4066
goto/16 :goto_44
.line 4068
:pswitch_1bc
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_1ca
.line 4069
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_VERIFY on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4070
:cond_1ca
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_c47
.line 4071
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "OP_VERIFY failed"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4074
:pswitch_1de
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script called OP_RETURN"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4076
:pswitch_1e6
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_1f4
.line 4077
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_TOALTSTACK on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4078
:cond_1f4
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
invoke-virtual {v13, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4079
goto/16 :goto_44
.line 4081
:pswitch_1ff
invoke-virtual {v13}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_20d
.line 4082
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_FROMALTSTACK on an empty altstack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4083
:cond_20d
invoke-virtual {v13}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4084
goto/16 :goto_44
.line 4086
:pswitch_21a
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_229
.line 4087
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2DROP on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4088
:cond_229
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
.line 4089
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move v2, v11
move v3, v10
.line 4090
goto/16 :goto_44
.line 4092
:pswitch_233
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_242
.line 4093
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2DUP on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4094
:cond_242
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v3
.line 4095
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4096
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4097
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4098
goto/16 :goto_44
.line 4100
:pswitch_25e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_26d
.line 4101
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_3DUP on a stack with size < 3"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4102
:cond_26d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v4
.line 4103
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4104
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4105
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4106
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4107
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4108
goto/16 :goto_44
.line 4110
:pswitch_294
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x4
if-ge v2, v3, :cond_2a3
.line 4111
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2OVER on a stack with size < 4"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4112
:cond_2a3
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v3
.line 4113
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 4114
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 4115
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4116
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4117
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4118
goto/16 :goto_44
.line 4120
:pswitch_2c5
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x6
if-ge v2, v3, :cond_2d4
.line 4121
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2ROT on a stack with size < 6"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4122
:cond_2d4
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4123
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4124
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 4125
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v5
check-cast v5, [B
.line 4126
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v6
check-cast v6, [B
.line 4127
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v7
check-cast v7, [B
.line 4128
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4129
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4130
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4131
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4132
move-object/from16 v0, p4
invoke-virtual {v0, v7}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4133
move-object/from16 v0, p4
invoke-virtual {v0, v6}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4134
goto/16 :goto_44
.line 4136
:pswitch_31a
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x4
if-ge v2, v3, :cond_329
.line 4137
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2SWAP on a stack with size < 4"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4138
:cond_329
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4139
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4140
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 4141
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v5
check-cast v5, [B
.line 4142
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4143
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4144
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4145
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4146
goto/16 :goto_44
.line 4148
:pswitch_359
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_367
.line 4149
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_IFDUP on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4150
:cond_367
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-eqz v2, :cond_c47
.line 4151
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
goto/16 :goto_44
.line 4154
:pswitch_380
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
int-to-long v2, v2
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4155
goto/16 :goto_44
.line 4157
:pswitch_39a
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_3a8
.line 4158
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_DROP on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4159
:cond_3a8
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move v2, v11
move v3, v10
.line 4160
goto/16 :goto_44
.line 4162
:pswitch_3af
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_3bd
.line 4163
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_DUP on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4164
:cond_3bd
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4165
goto/16 :goto_44
.line 4167
:pswitch_3ca
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_3d9
.line 4168
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NIP on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4169
:cond_3d9
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4170
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
.line 4171
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4172
goto/16 :goto_44
.line 4174
:pswitch_3eb
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_3fa
.line 4175
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_OVER on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4176
:cond_3fa
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v2
.line 4177
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 4178
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4179
goto/16 :goto_44
.line 4182
:pswitch_40e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_41c
.line 4183
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_PICK/OP_ROLL on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4184
:cond_41c
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->longValue()J
move-result-wide v4
.line 4185
const-wide/16 v2, 0x0
cmp-long v2, v4, v2
if-ltz v2, :cond_439
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
int-to-long v2, v2
cmp-long v2, v4, v2
if-ltz v2, :cond_441
.line 4186
:cond_439
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "OP_PICK/OP_ROLL attempted to get data deeper than stack size"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4187
:cond_441
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v6
.line 4188
const-wide/16 v2, 0x0
:goto_447
cmp-long v7, v2, v4
if-gez v7, :cond_453
.line 4189
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 4188
const-wide/16 v18, 0x1
add-long v2, v2, v18
goto :goto_447
.line 4190
:cond_453
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4191
const/16 v3, 0x7a
if-ne v8, v3, :cond_460
.line 4192
invoke-interface {v6}, Ljava/util/Iterator;->remove()V
.line 4193
:cond_460
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4194
goto/16 :goto_44
.line 4196
:pswitch_469
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_478
.line 4197
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ROT on a stack with size < 3"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4198
:cond_478
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4199
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4200
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 4201
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4202
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4203
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4204
goto/16 :goto_44
.line 4207
:pswitch_49d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_4ac
.line 4208
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SWAP on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4209
:cond_4ac
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4210
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4211
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4212
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 4213
const/16 v3, 0x7d
if-ne v8, v3, :cond_c47
.line 4214
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
goto/16 :goto_44
.line 4218
:pswitch_4cf
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_4de
.line 4219
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid stack operation."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4220
:cond_4de
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4221
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4223
array-length v4, v3
array-length v5, v2
add-int/2addr v4, v5
.line 4224
int-to-long v6, v4
const-wide/16 v8, 0x208
cmp-long v5, v6, v8
if-lez v5, :cond_4fc
.line 4225
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Push value size limit exceeded."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4227
:cond_4fc
new-array v4, v4, [B
.line 4228
const/4 v5, 0x0
const/4 v6, 0x0
array-length v7, v3
invoke-static {v3, v5, v4, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4229
const/4 v5, 0x0
array-length v3, v3
array-length v6, v2
invoke-static {v2, v5, v4, v3, v6}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4230
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
.line 4232
goto/16 :goto_44
.line 4235
:pswitch_513
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_522
.line 4236
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid stack operation."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4238
:cond_522
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 4244
const-wide/32 v4, 0x7fffffff
invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v3
.line 4245
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v3
if-ltz v3, :cond_541
.line 4246
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid OP_SPLIT range."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4248
:cond_541
invoke-virtual {v2}, Ljava/math/BigInteger;->intValue()I
move-result v3
.line 4249
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4251
array-length v4, v2
if-gt v3, v4, :cond_550
if-gez v3, :cond_558
.line 4252
:cond_550
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid OP_SPLIT range."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4254
:cond_558
new-array v4, v3, [B
.line 4255
array-length v5, v2
sub-int/2addr v5, v3
new-array v5, v5, [B
.line 4257
const/4 v6, 0x0
const/4 v7, 0x0
invoke-static {v2, v6, v4, v7, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4258
const/4 v6, 0x0
array-length v7, v5
invoke-static {v2, v3, v5, v6, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4260
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
.line 4261
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
.line 4262
goto/16 :goto_44
.line 4265
:pswitch_576
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_585
.line 4266
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid stack operation."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4268
:cond_585
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->intValue()I
move-result v4
.line 4270
int-to-long v2, v4
const-wide/16 v6, 0x208
cmp-long v2, v2, v6
if-lez v2, :cond_5a2
.line 4271
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Push value size limit exceeded."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4273
:cond_5a2
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4277
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->j([B)[B
move-result-object v5
.line 4278
array-length v2, v5
if-le v2, v4, :cond_5b7
.line 4280
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "The requested encoding is impossible to satisfy."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4283
:cond_5b7
array-length v2, v5
if-ne v2, v4, :cond_5c3
.line 4285
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
goto/16 :goto_44
.line 4286
:cond_5c3
if-nez v4, :cond_5d0
.line 4287
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->EMPTY_BYTE_ARRAY:[B
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
goto/16 :goto_44
.line 4289
:cond_5d0
const/4 v2, 0x0
.line 4290
array-length v3, v5
if-lez v3, :cond_5e5
.line 4291
array-length v2, v5
add-int/lit8 v2, v2, -0x1
aget-byte v2, v5, v2
and-int/lit16 v2, v2, 0x80
.line 4292
array-length v3, v5
add-int/lit8 v3, v3, -0x1
aget-byte v6, v5, v3
and-int/lit8 v6, v6, 0x7f
int-to-byte v6, v6
aput-byte v6, v5, v3
.line 4294
:cond_5e5
array-length v3, v5
if-le v3, v4, :cond_5fe
move v3, v4
.line 4295
:goto_5e9
new-array v6, v4, [B
.line 4296
const/4 v7, 0x0
const/4 v8, 0x0
invoke-static {v5, v7, v6, v8, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 4297
add-int/lit8 v3, v4, -0x1
int-to-byte v2, v2
aput-byte v2, v6, v3
.line 4298
move-object/from16 v0, p4
invoke-virtual {v0, v6}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
.line 4300
goto/16 :goto_44
.line 4294
:cond_5fe
array-length v3, v5
goto :goto_5e9
.line 4303
:pswitch_600
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_60e
.line 4304
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid stack operation."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4306
:cond_60e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4307
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->j([B)[B
move-result-object v2
.line 4309
const/4 v3, 0x4
invoke-static {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->e([BI)Z
move-result v3
if-nez v3, :cond_627
.line 4310
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Given operand is not a number within the valid range [-2^31...2^31]"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4312
:cond_627
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
.line 4314
goto/16 :goto_44
.line 4316
:pswitch_630
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_63e
.line 4317
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SIZE on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4318
:cond_63e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
array-length v2, v2
int-to-long v2, v2
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4319
goto/16 :goto_44
.line 4321
:pswitch_65b
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4326
:pswitch_663
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_672
.line 4327
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid stack operation."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4332
:cond_672
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4333
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 4336
array-length v4, v3
array-length v5, v2
if-eq v4, v5, :cond_68a
.line 4337
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Invalid operand size."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4341
:cond_68a
packed-switch v8, :pswitch_data_d74
.line 4365
:cond_68d
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
move v2, v11
move v3, v10
.line 4367
goto/16 :goto_44
.line 4343
:pswitch_696
const/4 v4, 0x0
:goto_697
array-length v5, v3
if-ge v4, v5, :cond_68d
.line 4344
aget-byte v5, v3, v4
aget-byte v6, v2, v4
and-int/2addr v5, v6
int-to-byte v5, v5
aput-byte v5, v3, v4
.line 4343
add-int/lit8 v4, v4, 0x1
goto :goto_697
.line 4348
:pswitch_6a5
const/4 v4, 0x0
:goto_6a6
array-length v5, v3
if-ge v4, v5, :cond_68d
.line 4349
aget-byte v5, v3, v4
aget-byte v6, v2, v4
or-int/2addr v5, v6
int-to-byte v5, v5
aput-byte v5, v3, v4
.line 4348
add-int/lit8 v4, v4, 0x1
goto :goto_6a6
.line 4353
:pswitch_6b4
const/4 v4, 0x0
:goto_6b5
array-length v5, v3
if-ge v4, v5, :cond_68d
.line 4354
aget-byte v5, v3, v4
aget-byte v6, v2, v4
xor-int/2addr v5, v6
int-to-byte v5, v5
aput-byte v5, v3, v4
.line 4353
add-int/lit8 v4, v4, 0x1
goto :goto_6b5
.line 4370
:pswitch_6c3
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_6d2
.line 4371
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_EQUAL on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4372
:cond_6d2
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
invoke-static {v2, v3}, Ljava/util/Arrays;->equals([B[B)Z
move-result v2
if-eqz v2, :cond_6f4
const/4 v2, 0x1
new-array v2, v2, [B
const/4 v3, 0x0
const/4 v4, 0x1
aput-byte v4, v2, v3
:goto_6eb
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4373
goto/16 :goto_44
.line 4372
:cond_6f4
const/4 v2, 0x0
new-array v2, v2, [B
goto :goto_6eb
.line 4375
:pswitch_6f8
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_707
.line 4376
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_EQUALVERIFY on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4377
:cond_707
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
invoke-static {v2, v3}, Ljava/util/Arrays;->equals([B[B)Z
move-result v2
if-nez v2, :cond_c47
.line 4378
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "OP_EQUALVERIFY: non-equal data"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4386
:pswitch_721
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_72f
.line 4387
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted a numeric op on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4388
:cond_72f
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 4390
packed-switch v8, :pswitch_data_d7e
.line 4417
:pswitch_73c
new-instance v2, Ljava/lang/AssertionError;
const-string v3, "Unreachable"
invoke-direct {v2, v3}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
throw v2
.line 4392
:pswitch_744
sget-object v3, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 4420
:cond_74a
:goto_74a
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4421
goto/16 :goto_44
.line 4395
:pswitch_75b
sget-object v3, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
goto :goto_74a
.line 4398
:pswitch_762
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
goto :goto_74a
.line 4401
:pswitch_767
invoke-virtual {v2}, Ljava/math/BigInteger;->signum()I
move-result v3
if-gez v3, :cond_74a
.line 4402
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
goto :goto_74a
.line 4405
:pswitch_772
sget-object v3, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_77d
.line 4406
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_74a
.line 4408
:cond_77d
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_74a
.line 4411
:pswitch_780
sget-object v3, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_78b
.line 4412
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_74a
.line 4414
:cond_78b
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_74a
.line 4424
:pswitch_78e
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4439
:pswitch_796
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_7a5
.line 4440
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted a numeric op on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4441
:cond_7a5
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v3
.line 4442
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 4445
packed-switch v8, :pswitch_data_d92
.line 4546
:pswitch_7bc
new-instance v2, Ljava/lang/RuntimeException;
const-string v3, "Opcode switched at runtime?"
invoke-direct {v2, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v2
.line 4447
:pswitch_7c4
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 4549
:cond_7c8
:goto_7c8
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4550
goto/16 :goto_44
.line 4450
:pswitch_7d9
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
goto :goto_7c8
.line 4454
:pswitch_7de
invoke-virtual {v3}, Ljava/math/BigInteger;->intValue()I
move-result v4
if-nez v4, :cond_7ec
.line 4455
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Division by zero error"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4456
:cond_7ec
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
goto :goto_7c8
.line 4460
:pswitch_7f1
invoke-virtual {v3}, Ljava/math/BigInteger;->intValue()I
move-result v4
if-nez v4, :cond_7ff
.line 4461
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Modulo by zero error"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4470
:cond_7ff
invoke-virtual {v2}, Ljava/math/BigInteger;->longValue()J
move-result-wide v4
.line 4471
invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v6
invoke-virtual {v6, v2}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_815
.line 4473
new-instance v2, Ljava/lang/RuntimeException;
const-string v3, "Cannot handle large negative operand for modulo operation"
invoke-direct {v2, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v2
.line 4475
:cond_815
invoke-virtual {v3}, Ljava/math/BigInteger;->longValue()J
move-result-wide v6
.line 4476
invoke-static {v6, v7}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_82b
.line 4478
new-instance v2, Ljava/lang/RuntimeException;
const-string v3, "Cannot handle large negative operand for modulo operation"
invoke-direct {v2, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v2
.line 4480
:cond_82b
rem-long v2, v4, v6
.line 4481
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v2
goto :goto_7c8
.line 4486
:pswitch_832
sget-object v4, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_845
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v3, v2}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_845
.line 4487
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_7c8
.line 4489
:cond_845
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_7c8
.line 4492
:pswitch_848
sget-object v4, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_858
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v3, v2}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_85c
.line 4493
:cond_858
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4495
:cond_85c
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4498
:pswitch_860
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_86a
.line 4499
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4501
:cond_86a
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4504
:pswitch_86e
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_878
.line 4505
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4507
:cond_878
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4510
:pswitch_87c
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gez v2, :cond_886
.line 4511
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4513
:cond_886
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4516
:pswitch_88a
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-lez v2, :cond_894
.line 4517
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4519
:cond_894
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4522
:pswitch_898
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gtz v2, :cond_8a2
.line 4523
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4525
:cond_8a2
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4528
:pswitch_8a6
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-ltz v2, :cond_8b0
.line 4529
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4531
:cond_8b0
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_7c8
.line 4534
:pswitch_8b4
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-ltz v4, :cond_7c8
move-object v2, v3
.line 4538
goto/16 :goto_7c8
.line 4540
:pswitch_8bd
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gtz v4, :cond_7c8
move-object v2, v3
.line 4544
goto/16 :goto_7c8
.line 4554
:pswitch_8c6
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4556
:pswitch_8ce
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_8dd
.line 4557
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NUMEQUALVERIFY on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4558
:cond_8dd
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v3
.line 4559
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 4561
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_c47
.line 4562
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "OP_NUMEQUALVERIFY failed"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4565
:pswitch_8ff
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_90e
.line 4566
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_WITHIN on a stack with size < 3"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4567
:cond_90e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v3
.line 4568
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v4
.line 4569
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v15}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 4570
invoke-virtual {v4, v2}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gtz v4, :cond_94b
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gez v2, :cond_94b
.line 4571
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
goto/16 :goto_44
.line 4573
:cond_94b
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->d(Ljava/math/BigInteger;)[B
move-result-object v2
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4574
goto/16 :goto_44
.line 4576
:pswitch_95e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_96c
.line 4577
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_RIPEMD160 on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4578
:cond_96c
new-instance v3, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;
invoke-direct {v3}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;-><init>()V
.line 4579
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 4580
const/4 v4, 0x0
array-length v5, v2
invoke-virtual {v3, v2, v4, v5}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;->update([BII)V
.line 4581
const/16 v2, 0x14
new-array v2, v2, [B
.line 4582
const/4 v4, 0x0
invoke-virtual {v3, v2, v4}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;->doFinal([BI)I
.line 4583
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4584
goto/16 :goto_44
.line 4586
:pswitch_98d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_99b
.line 4587
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA1 on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4589
:cond_99b
:try_start_99b
const-string v2, "SHA-1"
invoke-static {v2}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
move-result-object v3
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-virtual {v3, v2}, Ljava/security/MessageDigest;->digest([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
:try_end_9b0
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_99b .. :try_end_9b0} :catch_9b4
move v2, v11
move v3, v10
.line 4592
goto/16 :goto_44
.line 4590
:catch_9b4
move-exception v2
.line 4591
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v3
.line 4595
:pswitch_9bb
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_9c9
.line 4596
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA256 on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4597
:cond_9c9
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;->hash([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4598
goto/16 :goto_44
.line 4600
:pswitch_9dc
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_9ea
.line 4601
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_HASH160 on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4602
:cond_9ea
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->sha256hash160([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4603
goto/16 :goto_44
.line 4605
:pswitch_9fd
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_a0b
.line 4606
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA256 on an empty stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4607
:cond_a0b
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;->hashTwice([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
.line 4608
goto/16 :goto_44
.line 5074
:pswitch_a1e
iget v3, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->startLocationInProgram:I
if-ltz v3, :cond_a2e
const/4 v3, 0x1
:goto_a23
invoke-static {v3}, Lcom/google/common/base/n;->checkState(Z)V
.line 5075
iget v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->startLocationInProgram:I
.line 4610
add-int/lit8 v11, v2, 0x1
move v2, v11
move v3, v10
.line 4611
goto/16 :goto_44
.line 5074
:cond_a2e
const/4 v3, 0x0
goto :goto_a23
.line 4614
:pswitch_a30
if-nez p0, :cond_a3a
.line 4615
new-instance v2, Ljava/lang/IllegalStateException;
const-string v3, "Script attempted signature check but no tx was provided"
invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v2
.line 4616
:cond_a3a
move-wide/from16 v0, p1
long-to-int v3, v0
.line 5713
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->STRICTENC:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_a5b
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->DERSIG:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
.line 5714
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_a5b
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
.line 5715
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_a6c
:cond_a5b
const/4 v2, 0x1
move v5, v2
.line 5716
:goto_a5d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v4, 0x2
if-ge v2, v4, :cond_a6f
.line 5717
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_CHECKSIG(VERIFY) on a stack with size < 2"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 5715
:cond_a6c
const/4 v2, 0x0
move v5, v2
goto :goto_a5d
.line 5718
:cond_a6f
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
move-object v9, v2
check-cast v9, [B
.line 5719
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 5721
invoke-virtual/range {p3 .. p3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v4
.line 5722
array-length v6, v4
invoke-static {v4, v11, v6}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v4
.line 5724
new-instance v6, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;
array-length v7, v2
add-int/lit8 v7, v7, 0x1
invoke-direct {v6, v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;-><init>(I)V
.line 5726
:try_start_a8d
invoke-static {v6, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
:try_end_a90
.catch Ljava/io/IOException; {:try_start_a8d .. :try_end_a90} :catch_adb
.line 5730
invoke-virtual {v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;->toByteArray()[B
move-result-object v6
invoke-static {v4, v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v4
.line 5733
const/4 v12, 0x0
.line 5735
:try_start_a99
sget-object v6, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
.line 5736
move-object/from16 v0, p6
invoke-interface {v0, v6}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v6
.line 5735
invoke-static {v2, v5, v6}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->a([BZZ)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;
move-result-object v17
.line 5739
invoke-virtual/range {v17 .. v17}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->gM()Z
move-result v2
if-eqz v2, :cond_ae2
.line 5740
invoke-virtual/range {v17 .. v17}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->gN()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$SigHash;
move-result-object v6
invoke-virtual/range {v17 .. v17}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->anyoneCanPay()Z
move-result v7
move-object/from16 v2, p0
move-object/from16 v5, p5
invoke-virtual/range {v2 .. v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(I[BLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction$SigHash;Z)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;
move-result-object v2
.line 5742
:goto_abb
invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;->getBytes()[B
move-result-object v2
move-object/from16 v0, v17
invoke-static {v2, v0, v9}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ECKey;->a([BLcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/l;[B)Z
:try_end_ac4
.catch Ljava/lang/Exception; {:try_start_a99 .. :try_end_ac4} :catch_aee
move-result v2
.line 5753
:goto_ac5
const/16 v3, 0xac
if-ne v8, v3, :cond_b08
.line 5754
if-eqz v2, :cond_b04
const/4 v2, 0x1
new-array v2, v2, [B
const/4 v3, 0x0
const/4 v4, 0x1
aput-byte v4, v2, v3
:goto_ad2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
move v2, v11
move v3, v10
goto/16 :goto_44
.line 5727
:catch_adb
move-exception v2
.line 5728
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v3
.line 5740
:cond_ae2
:try_start_ae2
move-object/from16 v0, v17
iget v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/crypto/j;->sighashFlags:I
int-to-byte v2, v2
.line 5741
move-object/from16 v0, p0
invoke-virtual {v0, v3, v4, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->a(I[BB)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Sha256Hash;
:try_end_aec
.catch Ljava/lang/Exception; {:try_start_ae2 .. :try_end_aec} :catch_aee
move-result-object v2
goto :goto_abb
.line 5743
:catch_aee
move-exception v2
.line 5749
invoke-virtual {v2}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v3
const-string v4, "Reached past end of ASN.1 stream"
invoke-virtual {v3, v4}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v3
if-nez v3, :cond_b02
.line 5750
sget-object v3, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->log:Lorg/slf4j/Logger;
const-string v4, "Signature checking failed!"
invoke-interface {v3, v4, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Throwable;)V
:cond_b02
move v2, v12
goto :goto_ac5
.line 5754
:cond_b04
const/4 v2, 0x0
new-array v2, v2, [B
goto :goto_ad2
.line 5755
:cond_b08
const/16 v3, 0xad
if-ne v8, v3, :cond_b16
.line 5756
if-nez v2, :cond_b16
.line 5757
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script failed OP_CHECKSIGVERIFY"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
:cond_b16
move v2, v11
move v3, v10
.line 4617
goto/16 :goto_44
.line 4620
:pswitch_b1a
if-nez p0, :cond_b24
.line 4621
new-instance v2, Ljava/lang/IllegalStateException;
const-string v3, "Script attempted signature check but no tx was provided"
invoke-direct {v2, v3}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v2
.line 4622
:cond_b24
move-wide/from16 v0, p1
long-to-int v3, v0
move-object/from16 v2, p0
move-object/from16 v4, p3
move-object/from16 v5, p4
move v6, v10
move v7, v11
move-object/from16 v9, p5
move-object/from16 v10, p6
invoke-static/range {v2 .. v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;ILcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;Ljava/util/LinkedList;IIILcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)I
move-result v10
move v2, v11
move v3, v10
.line 4623
goto/16 :goto_44
.line 4625
:pswitch_b3b
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->CHECKLOCKTIMEVERIFY:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_b64
.line 4627
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->DISCOURAGE_UPGRADABLE_NOPS:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_c47
.line 4628
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Script used a reserved opcode "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 4632
:cond_b64
move-wide/from16 v0, p1
long-to-int v3, v0
.line 6674
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_b75
.line 6675
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_CHECKLOCKTIMEVERIFY on a stack with size < 1"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 6679
:cond_b75
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
sget-object v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->MINIMALDATA:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v4
.line 6836
array-length v5, v2
const/4 v6, 0x5
if-le v5, v6, :cond_b8f
.line 6837
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script attempted to use an integer larger than 5 bytes"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 6839
:cond_b8f
if-eqz v4, :cond_ba0
const/4 v4, 0x5
invoke-static {v2, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->e([BI)Z
move-result v4
if-nez v4, :cond_ba0
.line 6840
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Number is not minimally encoded"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 6841
:cond_ba0
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->reverseBytes([B)[B
move-result-object v2
const/4 v4, 0x0
invoke-static {v2, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->decodeMPI([BZ)Ljava/math/BigInteger;
move-result-object v2
.line 6681
sget-object v4, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gez v4, :cond_bb9
.line 6682
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Negative locktime"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 7357
:cond_bb9
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->lockTime:J
.line 6686
const-wide/32 v6, 0x1dcd6500
cmp-long v4, v4, v6
if-gez v4, :cond_bcc
sget-object v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->LOCKTIME_THRESHOLD_BIG:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-ltz v4, :cond_be7
.line 8357
:cond_bcc
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->lockTime:J
.line 6687
const-wide/32 v6, 0x1dcd6500
cmp-long v4, v4, v6
if-ltz v4, :cond_bdf
sget-object v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->LOCKTIME_THRESHOLD_BIG:Ljava/math/BigInteger;
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gez v4, :cond_be7
.line 6689
:cond_bdf
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Locktime requirement type mismatch"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 9357
:cond_be7
move-object/from16 v0, p0
iget-wide v4, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->lockTime:J
.line 6693
invoke-static {v4, v5}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v4
invoke-virtual {v2, v4}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-lez v2, :cond_bfd
.line 6694
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Locktime requirement not satisfied"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 6706
:cond_bfd
int-to-long v2, v3
move-object/from16 v0, p0
invoke-virtual {v0, 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 v2
invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ai;->hasSequence()Z
move-result v2
if-nez v2, :cond_c12
.line 6707
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Transaction contains a final transaction input for a CHECKLOCKTIMEVERIFY script."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
:cond_c12
move v2, v11
move v3, v10
.line 4633
goto/16 :goto_44
.line 4643
:pswitch_c16
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->DISCOURAGE_UPGRADABLE_NOPS:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_c47
.line 4644
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Script used a reserved opcode "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
:cond_c35
move v11, v2
.line 4659
goto/16 :goto_1d
.line 4661
:cond_c38
invoke-virtual {v14}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-nez v2, :cond_c46
.line 4662
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "OP_IF/OP_NOTIF without OP_ENDIF"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 921
:cond_c46
return-void
:cond_c47
move v2, v11
move v3, v10
goto/16 :goto_44
:cond_c4b
move v3, v10
goto/16 :goto_1d
.line 4877
:pswitch_data_c4e
.packed-switch 0x7e
:pswitch_be
:pswitch_be
:pswitch_be
:pswitch_be
:pswitch_b1
:pswitch_bc
:pswitch_be
:pswitch_be
:pswitch_be
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_bc
:pswitch_bc
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_b1
:pswitch_bc
:pswitch_be
:pswitch_be
:pswitch_bc
:pswitch_bc
.end packed-switch
.line 4008
:pswitch_data_c8a
.packed-switch 0x63
:pswitch_e9
:pswitch_118
:pswitch_cf
:pswitch_cf
:pswitch_14c
:pswitch_173
.end packed-switch
.line 4042
:pswitch_data_c9a
.packed-switch 0x4f
:pswitch_187
:pswitch_d4
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_19e
:pswitch_1b8
:pswitch_d4
:pswitch_d4
:pswitch_d4
:pswitch_d4
:pswitch_d4
:pswitch_d4
:pswitch_d4
:pswitch_1bc
:pswitch_1de
:pswitch_1e6
:pswitch_1ff
:pswitch_21a
:pswitch_233
:pswitch_25e
:pswitch_294
:pswitch_2c5
:pswitch_31a
:pswitch_359
:pswitch_380
:pswitch_39a
:pswitch_3af
:pswitch_3ca
:pswitch_3eb
:pswitch_40e
:pswitch_40e
:pswitch_469
:pswitch_49d
:pswitch_49d
:pswitch_4cf
:pswitch_513
:pswitch_576
:pswitch_600
:pswitch_630
:pswitch_65b
:pswitch_663
:pswitch_663
:pswitch_663
:pswitch_6c3
:pswitch_6f8
:pswitch_d4
:pswitch_d4
:pswitch_721
:pswitch_721
:pswitch_78e
:pswitch_78e
:pswitch_721
:pswitch_721
:pswitch_721
:pswitch_721
:pswitch_796
:pswitch_796
:pswitch_8c6
:pswitch_796
:pswitch_796
:pswitch_8c6
:pswitch_8c6
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_8ce
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_796
:pswitch_8ff
:pswitch_95e
:pswitch_98d
:pswitch_9bb
:pswitch_9dc
:pswitch_9fd
:pswitch_a1e
:pswitch_a30
:pswitch_a30
:pswitch_b1a
:pswitch_b1a
:pswitch_c16
:pswitch_b3b
:pswitch_c16
:pswitch_c16
:pswitch_c16
:pswitch_c16
:pswitch_c16
:pswitch_c16
:pswitch_c16
:pswitch_c16
.end packed-switch
.line 4341
:pswitch_data_d74
.packed-switch 0x84
:pswitch_696
:pswitch_6a5
:pswitch_6b4
.end packed-switch
.line 4390
:pswitch_data_d7e
.packed-switch 0x8b
:pswitch_744
:pswitch_75b
:pswitch_73c
:pswitch_73c
:pswitch_762
:pswitch_767
:pswitch_772
:pswitch_780
.end packed-switch
.line 4445
:pswitch_data_d92
.packed-switch 0x93
:pswitch_7c4
:pswitch_7d9
:pswitch_7bc
:pswitch_7de
:pswitch_7f1
:pswitch_7bc
:pswitch_7bc
:pswitch_832
:pswitch_848
:pswitch_860
:pswitch_7bc
:pswitch_86e
:pswitch_87c
:pswitch_88a
:pswitch_898
:pswitch_8a6
:pswitch_8b4
:pswitch_8bd
.end packed-switch
.end method
.method private static castToBool([B)Z
.registers 4
.prologue
const/4 v1, 0x0
.line 801
move v0, v1
:goto_2
array-length v2, p0
if-ge v0, v2, :cond_17
.line 804
aget-byte v2, p0, v0
if-eqz v2, :cond_18
.line 805
array-length v2, p0
add-int/lit8 v2, v2, -0x1
if-ne v0, v2, :cond_16
aget-byte v0, p0, v0
and-int/lit16 v0, v0, 0xff
const/16 v2, 0x80
if-eq v0, v2, :cond_17
:cond_16
const/4 v1, 0x1
.line 807
:cond_17
return v1
.line 801
:cond_18
add-int/lit8 v0, v0, 0x1
goto :goto_2
.end method
.method public static decodeFromOpN(I)I
.registers 5
.prologue
const/16 v3, 0x4f
const/4 v1, 0x0
.line 584
if-eqz p0, :cond_f
if-eq p0, v3, :cond_f
const/16 v0, 0x51
if-lt p0, v0, :cond_18
const/16 v0, 0x60
if-gt p0, v0, :cond_18
:cond_f
const/4 v0, 0x1
:goto_10
const-string v2, "decodeFromOpN called on non OP_N opcode"
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 585
if-nez p0, :cond_1a
.line 590
:goto_17
return v1
:cond_18
move v0, v1
.line 584
goto :goto_10
.line 587
:cond_1a
if-ne p0, v3, :cond_1e
.line 588
const/4 v1, -0x1
goto :goto_17
.line 590
:cond_1e
add-int/lit8 v0, p0, 0x1
add-int/lit8 v1, v0, -0x51
goto :goto_17
.end method
.method static encodeToOpN(I)I
.registers 6
.prologue
const/4 v1, 0x0
const/4 v4, -0x1
.line 594
if-lt p0, v4, :cond_24
const/16 v0, 0x10
if-gt p0, v0, :cond_24
const/4 v0, 0x1
:goto_9
new-instance v2, Ljava/lang/StringBuilder;
const-string v3, "encodeToOpN called for "
invoke-direct {v2, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v2
const-string v3, " which we cannot encode in an opcode."
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v0, v2}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 595
if-nez p0, :cond_26
.line 600
:goto_23
return v1
:cond_24
move v0, v1
.line 594
goto :goto_9
.line 597
:cond_26
if-ne p0, v4, :cond_2b
.line 598
const/16 v1, 0x4f
goto :goto_23
.line 600
:cond_2b
add-int/lit8 v0, p0, -0x1
add-int/lit8 v1, v0, 0x51
goto :goto_23
.end method
.method private getQuickProgram()[B
.registers 2
.prologue
.line 1937
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
if-eqz v0, :cond_7
.line 1938
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
.line 1939
:goto_6
return-object v0
:cond_7
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v0
goto :goto_6
.end method
.method public static l([B)[B
.registers 4
.prologue
.line 795
const/4 v0, 0x1
new-array v0, v0, [B
const/4 v1, 0x0
const/16 v2, -0x55
aput-byte v2, v0, v1
invoke-static {p0, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v0
return-object v0
.end method
.method private parse([B)V
.registers 12
.prologue
.line 187
new-instance v0, Ljava/util/ArrayList;
const/4 v1, 0x5
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(I)V
iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 188
new-instance v3, Ljava/io/ByteArrayInputStream;
invoke-direct {v3, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 189
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v4
.line 190
:goto_11
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
if-lez v0, :cond_f1
.line 191
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
sub-int v2, v4, v0
.line 192
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v5
.line 194
const-wide/16 v0, -0x1
.line 195
if-ltz v5, :cond_4b
const/16 v6, 0x4c
if-ge v5, v6, :cond_4b
.line 197
int-to-long v0, v5
.line 213
:cond_2a
:goto_2a
const-wide/16 v6, -0x1
cmp-long v6, v0, v6
if-nez v6, :cond_b8
.line 214
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/4 v1, 0x0
invoke-direct {v0, v5, v1, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
.line 223
:goto_36
sget-object v5, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->QF:[Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/4 v1, 0x0
move v2, v1
move-object v1, v0
:goto_3b
const/4 v0, 0x4
if-ge v2, v0, :cond_ea
aget-object v0, v5, v2
.line 224
invoke-virtual {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_f2
.line 223
:goto_46
add-int/lit8 v1, v2, 0x1
move v2, v1
move-object v1, v0
goto :goto_3b
.line 198
:cond_4b
const/16 v6, 0x4c
if-ne v5, v6, :cond_63
.line 199
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
if-gtz v0, :cond_5d
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 200
:cond_5d
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v0
int-to-long v0, v0
goto :goto_2a
.line 201
:cond_63
const/16 v6, 0x4d
if-ne v5, v6, :cond_83
.line 203
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_76
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 204
:cond_76
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v0
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v1
shl-int/lit8 v1, v1, 0x8
or-int/2addr v0, v1
int-to-long v0, v0
goto :goto_2a
.line 205
:cond_83
const/16 v6, 0x4e
if-ne v5, v6, :cond_2a
.line 208
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
const/4 v1, 0x4
if-ge v0, v1, :cond_96
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 209
:cond_96
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v0
int-to-long v0, v0
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v6
int-to-long v6, v6
const/16 v8, 0x8
shl-long/2addr v6, v8
or-long/2addr v0, v6
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v6
int-to-long v6, v6
const/16 v8, 0x10
shl-long/2addr v6, v8
or-long/2addr v0, v6
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v6
int-to-long v6, v6
const/16 v8, 0x18
shl-long/2addr v6, v8
or-long/2addr v0, v6
goto/16 :goto_2a
.line 216
:cond_b8
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v6
int-to-long v6, v6
cmp-long v6, v0, v6
if-lez v6, :cond_c9
.line 217
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Push of data element that is larger than remaining data"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 218
:cond_c9
long-to-int v6, v0
new-array v6, v6, [B
.line 219
const-wide/16 v8, 0x0
cmp-long v7, v0, v8
if-eqz v7, :cond_dd
const/4 v7, 0x0
long-to-int v8, v0
invoke-virtual {v3, v6, v7, v8}, Ljava/io/ByteArrayInputStream;->read([BII)I
move-result v7
int-to-long v8, v7
cmp-long v0, v8, v0
if-nez v0, :cond_e8
:cond_dd
const/4 v0, 0x1
:goto_de
invoke-static {v0}, Lcom/google/common/base/n;->checkState(Z)V
.line 220
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
invoke-direct {v0, v5, v6, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[BI)V
goto/16 :goto_36
.line 219
:cond_e8
const/4 v0, 0x0
goto :goto_de
.line 226
:cond_ea
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto/16 :goto_11
.line 228
:cond_f1
return-void
:cond_f2
move-object v0, v1
goto/16 :goto_46
.end method
.method private static removeAllInstancesOf([B[B)[B
.registers 10
.prologue
const/16 v7, 0x4c
const/4 v1, 0x0
.line 757
new-instance v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;
array-length v0, p0
invoke-direct {v4, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;-><init>(I)V
move v0, v1
.line 760
:goto_a
array-length v2, p0
if-ge v0, v2, :cond_8b
.line 3744
array-length v2, p1
add-int/2addr v2, v0
array-length v3, p0
if-le v2, v3, :cond_2e
move v2, v1
.line 763
:goto_13
add-int/lit8 v5, v0, 0x1
aget-byte v0, p0, v0
and-int/lit16 v3, v0, 0xff
.line 765
if-ltz v3, :cond_41
if-ge v3, v7, :cond_41
move v0, v3
.line 778
:goto_1e
if-nez v2, :cond_2c
.line 780
:try_start_20
invoke-virtual {v4, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;->write(I)V
.line 781
add-int v2, v5, v0
invoke-static {p0, v5, v2}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v2
invoke-virtual {v4, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;->write([B)V
:try_end_2c
.catch Ljava/io/IOException; {:try_start_20 .. :try_end_2c} :catch_84
.line 786
:cond_2c
add-int/2addr v0, v5
.line 787
goto :goto_a
:cond_2e
move v2, v1
.line 3746
:goto_2f
array-length v3, p1
if-ge v2, v3, :cond_3f
.line 3747
add-int v3, v2, v0
aget-byte v3, p0, v3
aget-byte v5, p1, v2
if-eq v3, v5, :cond_3c
move v2, v1
.line 3748
goto :goto_13
.line 3746
:cond_3c
add-int/lit8 v2, v2, 0x1
goto :goto_2f
.line 3749
:cond_3f
const/4 v2, 0x1
goto :goto_13
.line 767
:cond_41
if-ne v3, v7, :cond_4a
.line 768
aget-byte v0, p0, v5
and-int/lit16 v0, v0, 0xff
add-int/lit8 v0, v0, 0x1
goto :goto_1e
.line 769
:cond_4a
const/16 v0, 0x4d
if-ne v3, v0, :cond_5e
.line 770
aget-byte v0, p0, v5
and-int/lit16 v0, v0, 0xff
add-int/lit8 v6, v5, 0x1
aget-byte v6, p0, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x8
or-int/2addr v0, v6
add-int/lit8 v0, v0, 0x2
goto :goto_1e
.line 772
:cond_5e
const/16 v0, 0x4e
if-ne v3, v0, :cond_90
.line 773
aget-byte v0, p0, v5
and-int/lit16 v0, v0, 0xff
add-int/lit8 v6, v5, 0x1
aget-byte v6, p0, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x8
or-int/2addr v0, v6
add-int/lit8 v6, v5, 0x1
aget-byte v6, p0, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x10
or-int/2addr v0, v6
add-int/lit8 v6, v5, 0x1
aget-byte v6, p0, v6
and-int/lit16 v6, v6, 0xff
shl-int/lit8 v6, v6, 0x18
or-int/2addr v0, v6
add-int/lit8 v0, v0, 0x4
goto :goto_1e
.line 782
:catch_84
move-exception v0
.line 783
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 788
:cond_8b
invoke-virtual {v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ap;->toByteArray()[B
move-result-object v0
return-object v0
:cond_90
move v0, v1
goto :goto_1e
.end method
.method public static writeBytes(Ljava/io/OutputStream;[B)V
.registers 5
.prologue
const/16 v2, 0x4c
.line 385
array-length v0, p1
if-ge v0, v2, :cond_d
.line 386
array-length v0, p1
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 387
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
.line 396
:goto_c
return-void
.line 388
:cond_d
array-length v0, p1
const/16 v1, 0x100
if-ge v0, v1, :cond_1d
.line 389
invoke-virtual {p0, v2}, Ljava/io/OutputStream;->write(I)V
.line 390
array-length v0, p1
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 391
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
goto :goto_c
.line 392
:cond_1d
array-length v0, p1
const/high16 v1, 0x10000
if-ge v0, v1, :cond_39
.line 393
const/16 v0, 0x4d
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 394
array-length v0, p1
and-int/lit16 v0, v0, 0xff
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 395
array-length v0, p1
shr-int/lit8 v0, v0, 0x8
and-int/lit16 v0, v0, 0xff
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 396
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
goto :goto_c
.line 398
:cond_39
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Unimplemented"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
# virtual methods
.method public final a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;[BI)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
.registers 16
.prologue
const/4 v2, 0x1
const/4 v3, 0x0
.line 471
.line 473
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_44
move v1, v2
move v4, v2
.line 2344
:goto_a
new-instance v7, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
invoke-direct {v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;-><init>()V
.line 3167
iget-object v0, p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v8
.line 2346
invoke-interface {v8}, Ljava/util/List;->size()I
move-result v9
.line 2351
sub-int v0, v9, v1
add-int/lit8 v0, v0, -0x1
invoke-interface {v8, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
.line 2352
const-string v5, "ScriptSig is already filled with signatures"
invoke-static {v0, v5}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 2355
invoke-interface {v8, v3, v4}, Ljava/util/List;->subList(II)Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_34
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_56
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 2356
invoke-virtual {v7, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
goto :goto_34
.line 476
:cond_44
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-eqz v0, :cond_4d
move v1, v3
move v4, v2
.line 477
goto :goto_a
.line 478
:cond_4d
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_c1
move v1, v2
move v4, v3
.line 479
goto :goto_a
.line 2361
:cond_56
sub-int v0, v9, v1
invoke-interface {v8, v4, v0}, Ljava/util/List;->subList(II)Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v10
move v5, v3
move v6, v3
:goto_62
invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_83
invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 2362
if-ne v6, p3, :cond_76
.line 2364
invoke-virtual {v7, p2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->m([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
.line 2365
add-int/lit8 v6, v6, 0x1
move v5, v2
.line 2367
:cond_76
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v11
if-nez v11, :cond_bf
.line 2368
invoke-virtual {v7, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
.line 2369
add-int/lit8 v0, v6, 0x1
:goto_81
move v6, v0
.line 2371
goto :goto_62
.line 2374
:cond_83
:goto_83
sub-int v0, v9, v4
sub-int/2addr v0, v1
if-ge v6, v0, :cond_9d
.line 2375
if-ne v6, p3, :cond_92
.line 2377
invoke-virtual {v7, p2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->m([B)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
move v0, v2
.line 2382
:goto_8e
add-int/lit8 v6, v6, 0x1
move v5, v0
goto :goto_83
.line 2380
:cond_92
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/4 v10, 0x0
invoke-direct {v0, v3, v10}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;-><init>(I[B)V
invoke-virtual {v7, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
move v0, v5
goto :goto_8e
.line 2386
:cond_9d
sub-int v0, v9, v1
invoke-interface {v8, v0, v9}, Ljava/util/List;->subList(II)Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_a7
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_b7
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/b;
.line 2387
invoke-virtual {v7, v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->a(Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;
goto :goto_a7
.line 2389
:cond_b7
invoke-static {v5}, Lcom/google/common/base/n;->checkState(Z)V
.line 2390
invoke-virtual {v7}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/a;->gT()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
move-result-object v0
.line 481
return-object v0
:cond_bf
move v0, v6
goto :goto_81
:cond_c1
move v1, v3
move v4, v3
goto/16 :goto_a
.end method
.method public final 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
.registers 19
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;",
"J",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;",
"Ljava/util/Set",
"<",
"Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
const/16 v5, 0x2710
.line 1883
:try_start_2
invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->gs()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;
move-result-object v2
invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/NetworkParameters;->gu()Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/y;
move-result-object v2
invoke-virtual {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;->bitcoinSerialize()[B
move-result-object v3
.line 11142
array-length v4, v3
invoke-virtual {v2, v3, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/y;->d([BI)Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Transaction;
:try_end_12
.catch Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ProtocolException; {:try_start_2 .. :try_end_12} :catch_29
move-result-object v3
.line 1887
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v2
array-length v2, v2
if-gt v2, v5, :cond_21
invoke-virtual/range {p4 .. p4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v2
array-length v2, v2
if-le v2, v5, :cond_30
.line 1888
:cond_21
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Script larger than 10,000 bytes"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1884
:catch_29
move-exception v2
.line 1885
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v3
.line 1890
:cond_30
new-instance v7, Ljava/util/LinkedList;
invoke-direct {v7}, Ljava/util/LinkedList;-><init>()V
.line 1891
const/4 v2, 0x0
move-wide v4, p2
move-object v6, p0
move-object/from16 v8, p5
move-object/from16 v9, p6
.line 1893
invoke-static/range {v3 .. v9}, 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;Ljava/util/LinkedList;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)V
.line 1894
sget-object v4, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->P2SH:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v4}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_f5
.line 1895
new-instance v2, Ljava/util/LinkedList;
invoke-direct {v2, v7}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V
move-object v10, v2
:goto_4f
move-wide v4, p2
move-object/from16 v6, p4
move-object/from16 v8, p5
move-object/from16 v9, p6
.line 1896
invoke-static/range {v3 .. v9}, 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;Ljava/util/LinkedList;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)V
.line 1898
invoke-virtual {v7}, Ljava/util/LinkedList;->size()I
move-result v2
if-nez v2, :cond_67
.line 1899
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Stack empty at end of script execution."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1901
:cond_67
invoke-virtual {v7}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_88
.line 1902
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v3, Ljava/lang/StringBuilder;
const-string v4, "Script resulted in a non-true stack: "
invoke-direct {v3, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1917
:cond_88
sget-object v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;->P2SH:Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p6
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_f4
invoke-virtual/range {p4 .. p4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v2
if-eqz v2, :cond_f4
.line 1918
iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
:cond_9e
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_be
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 1919
invoke-virtual {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v5
if-eqz v5, :cond_9e
iget v2, v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
const/16 v5, 0x60
if-le v2, v5, :cond_9e
.line 1920
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "Attempted to spend a P2SH scriptPubKey with a script that contained script ops"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1922
:cond_be
invoke-virtual {v10}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1923
new-instance v6, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
invoke-direct {v6, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;-><init>([B)V
move-wide v4, p2
move-object v7, v10
move-object/from16 v8, p5
move-object/from16 v9, p6
.line 1925
invoke-static/range {v3 .. v9}, 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;Ljava/util/LinkedList;Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/Coin;Ljava/util/Set;)V
.line 1927
invoke-virtual {v10}, Ljava/util/LinkedList;->size()I
move-result v2
if-nez v2, :cond_e0
.line 1928
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "P2SH stack empty at end of script execution."
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1930
:cond_e0
invoke-virtual {v10}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_f4
.line 1931
new-instance v2, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v3, "P2SH script execution resulted in a non-true stack"
invoke-direct {v2, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1933
:cond_f4
return-void
:cond_f5
move-object v10, v2
goto/16 :goto_4f
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 4
.prologue
.line 1960
if-ne p0, p1, :cond_4
const/4 v0, 0x1
.line 1962
:goto_3
return v0
.line 1961
:cond_4
if-eqz p1, :cond_10
invoke-virtual {p0}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
if-eq v0, v1, :cond_12
:cond_10
const/4 v0, 0x0
goto :goto_3
.line 1962
:cond_12
invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getQuickProgram()[B
move-result-object v0
check-cast p1, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;
invoke-direct {p1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getQuickProgram()[B
move-result-object v1
invoke-static {v0, v1}, Ljava/util/Arrays;->equals([B[B)Z
move-result v0
goto :goto_3
.end method
.method public final getNumberOfSignaturesRequiredToSpend()I
.registers 3
.prologue
.line 639
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-eqz v0, :cond_16
.line 641
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x0
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 642
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 v0
.line 645
:goto_15
return v0
.line 643
:cond_16
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-nez v0, :cond_22
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v0
if-eqz v0, :cond_24
.line 645
:cond_22
const/4 v0, 0x1
goto :goto_15
.line 646
:cond_24
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_32
.line 647
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "For P2SH number of signatures depends on redeem script"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 649
:cond_32
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
.end method
.method public final getProgram()[B
.registers 14
.prologue
const/16 v12, 0x4e
const/16 v11, 0x4d
const/16 v10, 0x4c
const/4 v2, 0x1
const/4 v3, 0x0
.line 152
:try_start_8
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
if-eqz v0, :cond_16
.line 153
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
iget-object v1, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
array-length v1, v1
invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
.line 159
:goto_15
return-object v0
.line 154
:cond_16
new-instance v4, Ljava/io/ByteArrayOutputStream;
invoke-direct {v4}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 155
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_21
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_da
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 2112
invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v1
if-eqz v1, :cond_4a
.line 2113
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
if-nez v1, :cond_48
move v1, v2
:goto_38
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 2137
:cond_3b
iget v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
invoke-virtual {v4, v0}, Ljava/io/OutputStream;->write(I)V
:try_end_40
.catch Ljava/io/IOException; {:try_start_8 .. :try_end_40} :catch_41
goto :goto_21
.line 160
:catch_41
move-exception v0
.line 161
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
:cond_48
move v1, v3
.line 2113
goto :goto_38
.line 2115
:cond_4a
:try_start_4a
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
if-eqz v1, :cond_3b
.line 2116
iget v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-ge v1, v10, :cond_6a
.line 2117
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
iget v6, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-ne v1, v6, :cond_68
move v1, v2
:goto_5a
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 2118
iget v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
.line 2135
:goto_62
iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
invoke-virtual {v4, v0}, Ljava/io/OutputStream;->write([B)V
goto :goto_21
:cond_68
move v1, v3
.line 2117
goto :goto_5a
.line 2119
:cond_6a
iget v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-ne v1, v10, :cond_87
.line 2120
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
const/16 v6, 0xff
if-gt v1, v6, :cond_85
move v1, v2
:goto_76
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 2121
const/16 v1, 0x4c
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
.line 2122
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
goto :goto_62
:cond_85
move v1, v3
.line 2120
goto :goto_76
.line 2123
:cond_87
iget v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-ne v1, v11, :cond_b1
.line 2124
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
const v6, 0xffff
if-gt v1, v6, :cond_af
move v1, v2
:goto_94
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 2125
const/16 v1, 0x4d
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
.line 2126
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
and-int/lit16 v1, v1, 0xff
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
.line 2127
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
shr-int/lit8 v1, v1, 0x8
and-int/lit16 v1, v1, 0xff
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
goto :goto_62
:cond_af
move v1, v3
.line 2124
goto :goto_94
.line 2128
:cond_b1
iget v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->opcode:I
if-ne v1, v12, :cond_d2
.line 2129
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
int-to-long v6, v1
const-wide/16 v8, 0x208
cmp-long v1, v6, v8
if-gtz v1, :cond_d0
move v1, v2
:goto_c0
invoke-static {v1}, Lcom/google/common/base/n;->checkState(Z)V
.line 2130
const/16 v1, 0x4e
invoke-virtual {v4, v1}, Ljava/io/OutputStream;->write(I)V
.line 2131
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v1, v1
int-to-long v6, v1
invoke-static {v6, v7, v4}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->uint32ToByteStreamLE(JLjava/io/OutputStream;)V
goto :goto_62
:cond_d0
move v1, v3
.line 2129
goto :goto_c0
.line 2133
:cond_d2
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Unimplemented"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 158
:cond_da
invoke-virtual {v4}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
iput-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
.line 159
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->program:[B
:try_end_e2
.catch Ljava/io/IOException; {:try_start_4a .. :try_end_e2} :catch_41
goto/16 :goto_15
.end method
.method public final getPubKey()[B
.registers 6
.prologue
const/4 v4, 0x2
.line 294
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-eq v0, v4, :cond_24
.line 295
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script not of right size, expecting 2 but got "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v2, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)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 297
:cond_24
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x0
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 298
iget-object v2, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
.line 299
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x1
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
.line 300
iget-object v1, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
.line 301
if-eqz v2, :cond_46
array-length v3, v2
if-le v3, v4, :cond_46
if-eqz v1, :cond_46
array-length v3, v1
if-le v3, v4, :cond_46
move-object v0, v1
.line 306
:goto_45
return-object v0
.line 304
:cond_46
const/16 v1, 0xac
invoke-virtual {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_55
if-eqz v2, :cond_55
array-length v0, v2
if-le v0, v4, :cond_55
move-object v0, v2
.line 306
goto :goto_45
.line 308
:cond_55
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script did not match expected form: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p0}, 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
.end method
.method public final getPubKeyHash()[B
.registers 3
.prologue
.line 277
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_12
.line 278
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x2
invoke-interface {v0, v1}, 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 280
:goto_11
return-object v0
.line 279
:cond_12
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_24
.line 280
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x1
invoke-interface {v0, v1}, 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
goto :goto_11
.line 282
:cond_24
new-instance v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;
const-string v1, "Script not in the standard scriptPubKey form"
invoke-direct {v0, v1}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public hashCode()I
.registers 2
.prologue
.line 1967
invoke-direct {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getQuickProgram()[B
move-result-object v0
invoke-static {v0}, Ljava/util/Arrays;->hashCode([B)I
move-result v0
return v0
.end method
.method public final isOpReturn()Z
.registers 4
.prologue
const/4 v1, 0x0
.line 845
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
if-lez v0, :cond_1b
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v2, 0x6a
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_1b
const/4 v0, 0x1
:goto_1a
return v0
:cond_1b
move v0, v1
goto :goto_1a
.end method
.method public final isPayToScriptHash()Z
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 694
invoke-virtual {p0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->getProgram()[B
move-result-object v2
.line 695
array-length v3, v2
const/16 v4, 0x17
if-ne v3, v4, :cond_26
aget-byte v3, v2, v1
and-int/lit16 v3, v3, 0xff
const/16 v4, 0xa9
if-ne v3, v4, :cond_26
aget-byte v3, v2, v0
and-int/lit16 v3, v3, 0xff
const/16 v4, 0x14
if-ne v3, v4, :cond_26
const/16 v3, 0x16
aget-byte v2, v2, v3
and-int/lit16 v2, v2, 0xff
const/16 v3, 0x87
if-ne v2, v3, :cond_26
:goto_25
return v0
:cond_26
move v0, v1
goto :goto_25
.end method
.method public final isSentToAddress()Z
.registers 5
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 248
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
const/4 v3, 0x5
if-ne v0, v3, :cond_5f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 249
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/script/b;
const/16 v3, 0x76
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 250
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v3, 0xa9
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x2
.line 251
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
array-length v0, v0
const/16 v3, 0x14
if-ne v0, v3, :cond_5f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x3
.line 252
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;
const/16 v3, 0x88
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x4
.line 253
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;
const/16 v3, 0xac
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
move v0, v1
:goto_5e
return v0
:cond_5f
move v0, v2
.line 248
goto :goto_5e
.end method
.method public final isSentToCLTVPaymentChannel()Z
.registers 4
.prologue
const/4 v1, 0x0
.line 728
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
const/16 v2, 0xa
if-eq v0, v2, :cond_d
move v0, v1
.line 740
:goto_c
return v0
.line 730
:cond_d
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v2, 0x63
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_1f
move v0, v1
goto :goto_c
.line 732
:cond_1f
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v2, 0x2
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/script/b;
const/16 v2, 0xad
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_32
move v0, v1
goto :goto_c
.line 733
:cond_32
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v2, 0x3
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/script/b;
const/16 v2, 0x67
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_45
move v0, v1
goto :goto_c
.line 735
:cond_45
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v2, 0x5
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/script/b;
const/16 v2, 0xb1
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_58
move v0, v1
goto :goto_c
.line 736
:cond_58
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v2, 0x6
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/script/b;
const/16 v2, 0x75
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_6b
move v0, v1
goto :goto_c
.line 737
:cond_6b
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v2, 0x7
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/script/b;
const/16 v2, 0x68
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_7e
move v0, v1
goto :goto_c
.line 739
:cond_7e
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/16 v2, 0x9
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/script/b;
const/16 v2, 0xac
invoke-virtual {v0, v2}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_93
move v0, v1
goto/16 :goto_c
.line 740
:cond_93
const/4 v0, 0x1
goto/16 :goto_c
.end method
.method public final isSentToMultiSig()Z
.registers 5
.prologue
const/4 v2, 0x1
const/4 v1, 0x0
.line 705
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
const/4 v3, 0x4
if-ge v0, v3, :cond_d
move v0, v1
.line 724
:goto_c
return v0
.line 706
:cond_d
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v3, p0, 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, -0x1
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;
.line 708
invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v3
if-nez v3, :cond_25
move v0, v1
goto :goto_c
.line 709
:cond_25
const/16 v3, 0xae
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v3
if-nez v3, :cond_37
const/16 v3, 0xaf
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_37
move v0, v1
goto :goto_c
.line 712
:cond_37
:try_start_37
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v3, p0, 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;
.line 713
invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v3
if-nez v3, :cond_4f
move v0, v1
goto :goto_c
.line 714
:cond_4f
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 v0
.line 715
if-lez v0, :cond_61
iget-object v3, p0, 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 v0, v0, 0x3
if-eq v3, v0, :cond_63
:cond_61
move v0, v1
goto :goto_c
:cond_63
move v3, v2
.line 716
:goto_64
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
add-int/lit8 v0, v0, -0x2
if-ge v3, v0, :cond_82
.line 717
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
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;
invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v0
if-eqz v0, :cond_7e
move v0, v1
goto :goto_c
.line 716
:cond_7e
add-int/lit8 v0, v3, 0x1
move v3, v0
goto :goto_64
.line 720
:cond_82
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x0
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
:try_end_90
.catch Ljava/lang/IllegalArgumentException; {:try_start_37 .. :try_end_90} :catch_96
move-result v0
if-gtz v0, :cond_9a
move v0, v1
goto/16 :goto_c
.line 722
:catch_96
move-exception v0
move v0, v1
goto/16 :goto_c
:cond_9a
move v0, v2
.line 724
goto/16 :goto_c
.end method
.method public final isSentToRawPubKey()Z
.registers 5
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 237
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
const/4 v3, 0x2
if-ne v0, v3, :cond_38
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;
const/16 v3, 0xac
invoke-virtual {v0, v3}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_38
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 238
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/script/b;
invoke-virtual {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->isOpCode()Z
move-result v0
if-nez v0, :cond_38
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
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/script/b;
iget-object v0, v0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/b;->data:[B
array-length v0, v0
if-le v0, v1, :cond_38
move v0, v1
:goto_37
return v0
:cond_38
move v0, v2
.line 237
goto :goto_37
.end method
.method public toString()Ljava/lang/String;
.registers 2
.prologue
.line 145
iget-object v0, p0, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-static {v0}, Lcom/cmcm/safewallet/data/coinprovider/bch/bitcoinj/core/aq;->join(Ljava/lang/Iterable;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method