Script.smali
.class public Lorg/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",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;"
}
.end annotation
.end field
.field public static final MAX_P2SH_SIGOPS:I = 0xf
.field public static final MAX_SCRIPT_ELEMENT_SIZE:J = 0x208L
.field public static final SIG_SIZE:I = 0x4b
.field private static final STANDARD_TRANSACTION_SCRIPT_CHUNKS:[Lorg/bitcoinj/script/ScriptChunk;
.field private static final log:Lorg/slf4j/Logger;
# instance fields
.field protected chunks:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/ScriptChunk;",
">;"
}
.end annotation
.end field
.field private creationTimeSeconds:J
.field protected 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 80
const-class v0, Lorg/bitcoinj/script/Script$VerifyFlag;
invoke-static {v0}, Ljava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v0
sput-object v0, Lorg/bitcoinj/script/Script;->ALL_VERIFY_FLAGS:Ljava/util/EnumSet;
.line 82
const-class v0, Lorg/bitcoinj/script/Script;
invoke-static {v0}, Lorg/slf4j/LoggerFactory;->getLogger(Ljava/lang/Class;)Lorg/slf4j/Logger;
move-result-object v0
sput-object v0, Lorg/bitcoinj/script/Script;->log:Lorg/slf4j/Logger;
.line 163
const/4 v0, 0x4
new-array v0, v0, [Lorg/bitcoinj/script/ScriptChunk;
new-instance v1, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x76
invoke-direct {v1, v2, v5, v3}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
aput-object v1, v0, v3
new-instance v1, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0xa9
invoke-direct {v1, v2, v5, v4}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
aput-object v1, v0, v4
const/4 v1, 0x2
new-instance v2, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0x88
const/16 v4, 0x17
invoke-direct {v2, v3, v5, v4}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
aput-object v2, v0, v1
const/4 v1, 0x3
new-instance v2, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0xac
const/16 v4, 0x18
invoke-direct {v2, v3, v5, v4}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
aput-object v2, v0, v1
sput-object v0, Lorg/bitcoinj/script/Script;->STANDARD_TRANSACTION_SCRIPT_CHUNKS:[Lorg/bitcoinj/script/ScriptChunk;
return-void
.end method
.method private constructor <init>()V
.registers 2
.prologue
.line 98
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 99
iput-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 100
return-void
.end method
.method constructor <init>(Ljava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/ScriptChunk;",
">;)V"
}
.end annotation
.prologue
.line 103
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 104
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, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 105
invoke-static {}, Lorg/bitcoinj/core/Utils;->currentTimeSeconds()J
move-result-wide v0
iput-wide v0, p0, Lorg/bitcoinj/script/Script;->creationTimeSeconds:J
.line 106
return-void
.end method
.method public constructor <init>([B)V
.registers 4
.prologue
.line 113
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 114
iput-object p1, p0, Lorg/bitcoinj/script/Script;->program:[B
.line 115
invoke-direct {p0, p1}, Lorg/bitcoinj/script/Script;->parse([B)V
.line 116
const-wide/16 v0, 0x0
iput-wide v0, p0, Lorg/bitcoinj/script/Script;->creationTimeSeconds:J
.line 117
return-void
.end method
.method public constructor <init>([BJ)V
.registers 4
.prologue
.line 119
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 120
iput-object p1, p0, Lorg/bitcoinj/script/Script;->program:[B
.line 121
invoke-direct {p0, p1}, Lorg/bitcoinj/script/Script;->parse([B)V
.line 122
iput-wide p2, p0, Lorg/bitcoinj/script/Script;->creationTimeSeconds:J
.line 123
return-void
.end method
.method private static castToBigInteger([B)Ljava/math/BigInteger;
.registers 3
.prologue
.line 811
array-length v0, p0
const/4 v1, 0x4
if-le v0, v1, :cond_c
.line 812
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Script attempted to use an integer larger than 4 bytes"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 813
:cond_c
invoke-static {p0}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v0
const/4 v1, 0x0
invoke-static {v0, v1}, Lorg/bitcoinj/core/Utils;->decodeMPI([BZ)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method private static castToBigInteger([BI)Ljava/math/BigInteger;
.registers 5
.prologue
.line 825
array-length v0, p0
if-le v0, p1, :cond_1e
.line 826
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script attempted to use an integer larger than "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " bytes"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 828
:cond_1e
invoke-static {p0}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v0
const/4 v1, 0x0
invoke-static {v0, v1}, Lorg/bitcoinj/core/Utils;->decodeMPI([BZ)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method private static castToBool([B)Z
.registers 4
.prologue
const/4 v1, 0x0
.line 794
move v0, v1
:goto_2
array-length v2, p0
if-ge v0, v2, :cond_17
.line 797
aget-byte v2, p0, v0
if-eqz v2, :cond_18
.line 798
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 800
:cond_17
return v1
.line 794
:cond_18
add-int/lit8 v0, v0, 0x1
goto :goto_2
.end method
.method public static createInputScript([B)[B
.registers 3
.prologue
.line 432
:try_start_0
new-instance v0, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;
array-length v1, p0
add-int/lit8 v1, v1, 0x2
invoke-direct {v0, v1}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;-><init>(I)V
.line 433
invoke-static {v0, p0}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
.line 434
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
:try_end_e
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_e} :catch_10
move-result-object v0
return-object v0
.line 435
:catch_10
move-exception v0
.line 436
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public static createInputScript([B[B)[B
.registers 5
.prologue
.line 420
:try_start_0
new-instance v0, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;
array-length v1, p0
array-length v2, p1
add-int/2addr v1, v2
add-int/lit8 v1, v1, 0x2
invoke-direct {v0, v1}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;-><init>(I)V
.line 421
invoke-static {v0, p0}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
.line 422
invoke-static {v0, p1}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
.line 423
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
:try_end_13
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_13} :catch_15
move-result-object v0
return-object v0
.line 424
:catch_15
move-exception v0
.line 425
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
.method public static createMultiSigOutputScript(ILjava/util/List;)[B
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;)[B"
}
.end annotation
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 397
if-lez p0, :cond_5e
move v0, v1
:goto_5
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 398
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
if-gt p0, v0, :cond_60
move v0, v1
:goto_f
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 399
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
const/16 v3, 0x10
if-gt v0, v3, :cond_62
:goto_1a
invoke-static {v1}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 400
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x3
if-le v0, v1, :cond_33
.line 401
sget-object v0, Lorg/bitcoinj/script/Script;->log:Lorg/slf4j/Logger;
const-string v1, "Creating a multi-signature output that is non-standard: {} pubkeys, should be <= 3"
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v2
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
invoke-interface {v0, v1, v2}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Object;)V
.line 404
:cond_33
:try_start_33
new-instance v1, Ljava/io/ByteArrayOutputStream;
invoke-direct {v1}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 405
invoke-static {p0}, Lorg/bitcoinj/script/Script;->encodeToOpN(I)I
move-result v0
invoke-virtual {v1, v0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 406
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_43
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_64
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/core/ECKey;
.line 407
invoke-virtual {v0}, Lorg/bitcoinj/core/ECKey;->getPubKey()[B
move-result-object v0
invoke-static {v1, v0}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
:try_end_56
.catch Ljava/io/IOException; {:try_start_33 .. :try_end_56} :catch_57
goto :goto_43
.line 412
:catch_57
move-exception v0
.line 413
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
:cond_5e
move v0, v2
.line 397
goto :goto_5
:cond_60
move v0, v2
.line 398
goto :goto_f
:cond_62
move v1, v2
.line 399
goto :goto_1a
.line 409
:cond_64
:try_start_64
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v0
invoke-static {v0}, Lorg/bitcoinj/script/Script;->encodeToOpN(I)I
move-result v0
invoke-virtual {v1, v0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 410
const/16 v0, 0xae
invoke-virtual {v1, v0}, Ljava/io/ByteArrayOutputStream;->write(I)V
.line 411
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
:try_end_77
.catch Ljava/io/IOException; {:try_start_64 .. :try_end_77} :catch_57
move-result-object v0
return-object v0
.end method
.method static decodeFromOpN(I)I
.registers 5
.prologue
const/16 v3, 0x4f
const/4 v1, 0x0
.line 577
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 578
if-nez p0, :cond_1a
.line 583
:goto_17
return v1
:cond_18
move v0, v1
.line 577
goto :goto_10
.line 580
:cond_1a
if-ne p0, v3, :cond_1e
.line 581
const/4 v1, -0x1
goto :goto_17
.line 583
: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 587
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 588
if-nez p0, :cond_26
.line 593
:goto_23
return v1
:cond_24
move v0, v1
.line 587
goto :goto_9
.line 590
:cond_26
if-ne p0, v4, :cond_2b
.line 591
const/16 v1, 0x4f
goto :goto_23
.line 593
:cond_2b
add-int/lit8 v0, p0, -0x1
add-int/lit8 v1, v0, 0x51
goto :goto_23
.end method
.method private static equalsRange([BI[B)Z
.registers 7
.prologue
const/4 v1, 0x0
.line 737
array-length v0, p2
add-int/2addr v0, p1
array-length v2, p0
if-le v0, v2, :cond_7
.line 742
:cond_6
:goto_6
return v1
:cond_7
move v0, v1
.line 739
:goto_8
array-length v2, p2
if-ge v0, v2, :cond_16
.line 740
add-int v2, v0, p1
aget-byte v2, p0, v2
aget-byte v3, p2, v0
if-ne v2, v3, :cond_6
.line 739
add-int/lit8 v0, v0, 0x1
goto :goto_8
.line 742
:cond_16
const/4 v1, 0x1
goto :goto_6
.end method
.method private static executeCheckLockTimeVerify(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IILjava/util/Set;)V
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"I",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;II",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
const-wide/32 v4, 0x1dcd6500
.line 1389
invoke-virtual {p3}, Ljava/util/LinkedList;->size()I
move-result v0
if-gtz v0, :cond_11
.line 1390
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Attempted OP_CHECKLOCKTIMEVERIFY on a stack with size < 1"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1394
:cond_11
invoke-virtual {p3}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
const/4 v1, 0x5
invoke-static {v0, v1}, Lorg/bitcoinj/script/Script;->castToBigInteger([BI)Ljava/math/BigInteger;
move-result-object v0
.line 1396
sget-object v1, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v1
if-gez v1, :cond_2c
.line 1397
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Negative locktime"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1401
:cond_2c
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getLockTime()J
move-result-wide v2
cmp-long v1, v2, v4
if-gez v1, :cond_3c
sget-object v1, Lorg/bitcoinj/core/Transaction;->LOCKTIME_THRESHOLD_BIG:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v1
if-ltz v1, :cond_54
.line 1402
:cond_3c
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getLockTime()J
move-result-wide v2
cmp-long v1, v2, v4
if-ltz v1, :cond_4c
sget-object v1, Lorg/bitcoinj/core/Transaction;->LOCKTIME_THRESHOLD_BIG:Ljava/math/BigInteger;
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v1
if-gez v1, :cond_54
.line 1404
:cond_4c
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Locktime requirement type mismatch"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1408
:cond_54
invoke-virtual {p0}, Lorg/bitcoinj/core/Transaction;->getLockTime()J
move-result-wide v2
invoke-static {v2, v3}, Ljava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v0
if-lez v0, :cond_6a
.line 1409
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Locktime requirement not satisfied"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1421
:cond_6a
int-to-long v0, p1
invoke-virtual {p0, v0, v1}, Lorg/bitcoinj/core/Transaction;->getInput(J)Lorg/bitcoinj/core/TransactionInput;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/TransactionInput;->hasSequence()Z
move-result v0
if-nez v0, :cond_7d
.line 1422
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Transaction contains a final transaction input for a CHECKLOCKTIMEVERIFY script."
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1423
:cond_7d
return-void
.end method
.method private static executeCheckSig(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IILjava/util/Set;)V
.registers 15
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"I",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;II",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
const/4 v4, 0x1
const/4 v3, 0x0
.line 1428
sget-object v0, Lorg/bitcoinj/script/Script$VerifyFlag;->STRICTENC:Lorg/bitcoinj/script/Script$VerifyFlag;
invoke-interface {p6, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1a
sget-object v0, Lorg/bitcoinj/script/Script$VerifyFlag;->DERSIG:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 1429
invoke-interface {p6, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1a
sget-object v0, Lorg/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 1430
invoke-interface {p6, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_2a
:cond_1a
move v2, v4
.line 1431
:goto_1b
invoke-virtual {p3}, Ljava/util/LinkedList;->size()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_2c
.line 1432
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Attempted OP_CHECKSIG(VERIFY) on a stack with size < 2"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
:cond_2a
move v2, v3
.line 1430
goto :goto_1b
.line 1433
:cond_2c
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
.line 1434
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1436
invoke-virtual {p2}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v5
.line 1437
array-length v6, v5
invoke-static {v5, p4, v6}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v5
.line 1439
new-instance v6, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;
array-length v7, v1
add-int/lit8 v7, v7, 0x1
invoke-direct {v6, v7}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;-><init>(I)V
.line 1441
:try_start_49
invoke-static {v6, v1}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
:try_end_4c
.catch Ljava/io/IOException; {:try_start_49 .. :try_end_4c} :catch_7b
.line 1445
invoke-virtual {v6}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;->toByteArray()[B
move-result-object v6
invoke-static {v5, v6}, Lorg/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v5
.line 1450
:try_start_54
sget-object v6, Lorg/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 1451
invoke-interface {p6, v6}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v6
.line 1450
invoke-static {v1, v2, v6}, Lorg/bitcoinj/crypto/TransactionSignature;->decodeFromBitcoin([BZZ)Lorg/bitcoinj/crypto/TransactionSignature;
move-result-object v1
.line 1454
iget v2, v1, Lorg/bitcoinj/crypto/TransactionSignature;->sighashFlags:I
int-to-byte v2, v2
invoke-virtual {p0, p1, v5, v2}, Lorg/bitcoinj/core/Transaction;->hashForSignature(I[BB)Lorg/bitcoinj/core/Sha256Hash;
move-result-object v2
.line 1455
invoke-virtual {v2}, Lorg/bitcoinj/core/Sha256Hash;->getBytes()[B
move-result-object v2
invoke-static {v2, v1, v0}, Lorg/bitcoinj/core/ECKey;->verify([BLorg/bitcoinj/core/ECKey$ECDSASignature;[B)Z
:try_end_6c
.catch Ljava/lang/Exception; {:try_start_54 .. :try_end_6c} :catch_82
move-result v0
.line 1466
:goto_6d
const/16 v1, 0xac
if-ne p5, v1, :cond_9b
.line 1467
if-eqz v0, :cond_98
new-array v0, v4, [B
aput-byte v4, v0, v3
:goto_77
invoke-virtual {p3, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1471
:cond_7a
return-void
.line 1442
:catch_7b
move-exception v0
.line 1443
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 1456
:catch_82
move-exception v0
.line 1462
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v1
const-string v2, "Reached past end of ASN.1 stream"
invoke-virtual {v1, v2}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z
move-result v1
if-nez v1, :cond_96
.line 1463
sget-object v1, Lorg/bitcoinj/script/Script;->log:Lorg/slf4j/Logger;
const-string v2, "Signature checking failed!"
invoke-interface {v1, v2, v0}, Lorg/slf4j/Logger;->warn(Ljava/lang/String;Ljava/lang/Throwable;)V
:cond_96
move v0, v3
goto :goto_6d
.line 1467
:cond_98
new-array v0, v3, [B
goto :goto_77
.line 1468
:cond_9b
const/16 v1, 0xad
if-ne p5, v1, :cond_7a
.line 1469
if-nez v0, :cond_7a
.line 1470
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Script failed OP_CHECKSIGVERIFY"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private static executeMultiSig(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IIILjava/util/Set;)I
.registers 18
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"I",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;III",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;)I"
}
.end annotation
.prologue
.line 1476
sget-object v1, Lorg/bitcoinj/script/Script$VerifyFlag;->STRICTENC:Lorg/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p7
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1e
sget-object v1, Lorg/bitcoinj/script/Script$VerifyFlag;->DERSIG:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 1477
move-object/from16 v0, p7
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_1e
sget-object v1, Lorg/bitcoinj/script/Script$VerifyFlag;->LOW_S:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 1478
move-object/from16 v0, p7
invoke-interface {v0, v1}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_2f
:cond_1e
const/4 v1, 0x1
move v3, v1
.line 1479
:goto_20
invoke-virtual {p3}, Ljava/util/LinkedList;->size()I
move-result v1
const/4 v2, 0x2
if-ge v1, v2, :cond_32
.line 1480
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "Attempted OP_CHECKMULTISIG(VERIFY) on a stack with size < 2"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1478
:cond_2f
const/4 v1, 0x0
move v3, v1
goto :goto_20
.line 1481
:cond_32
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
invoke-static {v1}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v4
.line 1482
if-ltz v4, :cond_46
const/16 v1, 0x14
if-le v4, v1, :cond_4e
.line 1483
:cond_46
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "OP_CHECKMULTISIG(VERIFY) with pubkey count out of range"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1484
:cond_4e
add-int v6, p4, v4
.line 1485
const/16 v1, 0xc9
if-le v6, v1, :cond_5c
.line 1486
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "Total op count > 201 during OP_CHECKMULTISIG(VERIFY)"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1487
:cond_5c
invoke-virtual {p3}, Ljava/util/LinkedList;->size()I
move-result v1
add-int/lit8 v2, v4, 0x1
if-ge v1, v2, :cond_6c
.line 1488
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "Attempted OP_CHECKMULTISIG(VERIFY) on a stack with size < num_of_pubkeys + 2"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1490
:cond_6c
new-instance v7, Ljava/util/LinkedList;
invoke-direct {v7}, Ljava/util/LinkedList;-><init>()V
.line 1491
const/4 v1, 0x0
move v2, v1
:goto_73
if-ge v2, v4, :cond_82
.line 1492
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1493
invoke-virtual {v7, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1491
add-int/lit8 v1, v2, 0x1
move v2, v1
goto :goto_73
.line 1496
:cond_82
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
invoke-static {v1}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v1
invoke-virtual {v1}, Ljava/math/BigInteger;->intValue()I
move-result v5
.line 1497
if-ltz v5, :cond_94
if-le v5, v4, :cond_9c
.line 1498
:cond_94
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "OP_CHECKMULTISIG(VERIFY) with sig count out of range"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1499
:cond_9c
invoke-virtual {p3}, Ljava/util/LinkedList;->size()I
move-result v1
add-int/lit8 v2, v5, 0x1
if-ge v1, v2, :cond_ac
.line 1500
new-instance v1, Lorg/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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
.line 1502
:cond_ac
new-instance v8, Ljava/util/LinkedList;
invoke-direct {v8}, Ljava/util/LinkedList;-><init>()V
.line 1503
const/4 v1, 0x0
move v2, v1
:goto_b3
if-ge v2, v5, :cond_c2
.line 1504
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1505
invoke-virtual {v8, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1503
add-int/lit8 v1, v2, 0x1
move v2, v1
goto :goto_b3
.line 1508
:cond_c2
invoke-virtual {p2}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v1
.line 1509
array-length v2, v1
invoke-static {v1, p5, v2}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v1
.line 1511
invoke-virtual {v8}, Ljava/util/LinkedList;->iterator()Ljava/util/Iterator;
move-result-object v2
move-object v4, v1
:goto_d0
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_f8
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1512
new-instance v5, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;
array-length v9, v1
add-int/lit8 v9, v9, 0x1
invoke-direct {v5, v9}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;-><init>(I)V
.line 1514
:try_start_e4
invoke-static {v5, v1}, Lorg/bitcoinj/script/Script;->writeBytes(Ljava/io/OutputStream;[B)V
:try_end_e7
.catch Ljava/io/IOException; {:try_start_e4 .. :try_end_e7} :catch_f1
.line 1518
invoke-virtual {v5}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;->toByteArray()[B
move-result-object v1
invoke-static {v4, v1}, Lorg/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v1
move-object v4, v1
.line 1519
goto :goto_d0
.line 1515
:catch_f1
move-exception v1
.line 1516
new-instance v2, Ljava/lang/RuntimeException;
invoke-direct {v2, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v2
.line 1521
:cond_f8
const/4 v5, 0x1
.line 1522
:cond_f9
invoke-virtual {v8}, Ljava/util/LinkedList;->size()I
move-result v1
if-lez v1, :cond_184
.line 1523
invoke-virtual {v7}, Ljava/util/LinkedList;->pollFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1527
:try_start_105
invoke-virtual {v8}, Ljava/util/LinkedList;->getFirst()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2, v3}, Lorg/bitcoinj/crypto/TransactionSignature;->decodeFromBitcoin([BZ)Lorg/bitcoinj/crypto/TransactionSignature;
move-result-object v2
.line 1528
iget v9, v2, Lorg/bitcoinj/crypto/TransactionSignature;->sighashFlags:I
int-to-byte v9, v9
invoke-virtual {p0, p1, v4, v9}, Lorg/bitcoinj/core/Transaction;->hashForSignature(I[BB)Lorg/bitcoinj/core/Sha256Hash;
move-result-object v9
.line 1529
invoke-virtual {v9}, Lorg/bitcoinj/core/Sha256Hash;->getBytes()[B
move-result-object v9
invoke-static {v9, v2, v1}, Lorg/bitcoinj/core/ECKey;->verify([BLorg/bitcoinj/core/ECKey$ECDSASignature;[B)Z
move-result v1
if-eqz v1, :cond_123
.line 1530
invoke-virtual {v8}, Ljava/util/LinkedList;->pollFirst()Ljava/lang/Object;
:try_end_123
.catch Ljava/lang/Exception; {:try_start_105 .. :try_end_123} :catch_182
.line 1536
:cond_123
:goto_123
invoke-virtual {v8}, Ljava/util/LinkedList;->size()I
move-result v1
invoke-virtual {v7}, Ljava/util/LinkedList;->size()I
move-result v2
if-le v1, v2, :cond_f9
.line 1537
const/4 v1, 0x0
move v2, v1
.line 1543
:goto_12f
invoke-virtual {p3}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
.line 1544
sget-object v3, Lorg/bitcoinj/script/Script$VerifyFlag;->NULLDUMMY:Lorg/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p7
invoke-interface {v0, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_15b
array-length v3, v1
if-lez v3, :cond_15b
.line 1545
new-instance v2, Lorg/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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1547
:cond_15b
const/16 v1, 0xae
move/from16 v0, p6
if-ne v0, v1, :cond_172
.line 1548
if-eqz v2, :cond_16e
const/4 v1, 0x1
new-array v1, v1, [B
const/4 v2, 0x0
const/4 v3, 0x1
aput-byte v3, v1, v2
:goto_16a
invoke-virtual {p3, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1553
:cond_16d
return v6
.line 1548
:cond_16e
const/4 v1, 0x0
new-array v1, v1, [B
goto :goto_16a
.line 1549
:cond_172
const/16 v1, 0xaf
move/from16 v0, p6
if-ne v0, v1, :cond_16d
.line 1550
if-nez v2, :cond_16d
.line 1551
new-instance v1, Lorg/bitcoinj/core/ScriptException;
const-string v2, "Script failed OP_CHECKMULTISIGVERIFY"
invoke-direct {v1, v2}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v1
:catch_182
move-exception v1
goto :goto_123
:cond_184
move v2, v5
goto :goto_12f
.end method
.method public static executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Ljava/util/Set;)V
.registers 25
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"J",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
.line 864
const/4 v12, 0x0
.line 865
const/4 v6, 0x0
.line 867
new-instance v16, Ljava/util/LinkedList;
invoke-direct/range {v16 .. v16}, Ljava/util/LinkedList;-><init>()V
.line 868
new-instance v17, Ljava/util/LinkedList;
invoke-direct/range {v17 .. v17}, Ljava/util/LinkedList;-><init>()V
.line 870
move-object/from16 v0, p3
iget-object v2, v0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v18
:cond_14
:goto_14
invoke-interface/range {v18 .. v18}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_885
invoke-interface/range {v18 .. v18}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lorg/bitcoinj/script/ScriptChunk;
.line 871
const/4 v3, 0x0
invoke-static {v3}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v3
move-object/from16 v0, v17
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->contains(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_5c
const/4 v3, 0x1
.line 873
:goto_2e
iget v4, v2, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
if-nez v4, :cond_5e
.line 874
if-eqz v3, :cond_14
.line 877
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
.line 1377
:cond_3c
:goto_3c
:pswitch_3c
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
invoke-virtual/range {v16 .. v16}, Ljava/util/LinkedList;->size()I
move-result v3
add-int/2addr v2, v3
const/16 v3, 0x3e8
if-gt v2, v3, :cond_54
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
invoke-virtual/range {v16 .. v16}, Ljava/util/LinkedList;->size()I
move-result v3
add-int/2addr v2, v3
if-gez v2, :cond_14
.line 1378
:cond_54
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Stack size exceeded range"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 871
:cond_5c
const/4 v3, 0x0
goto :goto_2e
.line 878
:cond_5e
invoke-virtual {v2}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v4
if-nez v4, :cond_80
.line 879
iget-object v4, v2, Lorg/bitcoinj/script/ScriptChunk;->data:[B
array-length v4, v4
int-to-long v4, v4
const-wide/16 v8, 0x208
cmp-long v4, v4, v8
if-lez v4, :cond_76
.line 880
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted to push a data string larger than 520 bytes"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 882
:cond_76
if-eqz v3, :cond_14
.line 885
iget-object v2, v2, Lorg/bitcoinj/script/ScriptChunk;->data:[B
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto :goto_3c
.line 887
:cond_80
iget v7, v2, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
.line 888
const/16 v4, 0x60
if-le v7, v4, :cond_94
.line 889
add-int/lit8 v12, v12, 0x1
.line 890
const/16 v4, 0xc9
if-le v12, v4, :cond_94
.line 891
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "More script operations than is allowed"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 894
:cond_94
const/16 v4, 0x65
if-eq v7, v4, :cond_9c
const/16 v4, 0x66
if-ne v7, v4, :cond_a4
.line 895
:cond_9c
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Script included OP_VERIF or OP_VERNOTIF"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 897
:cond_a4
const/16 v4, 0x7e
if-eq v7, v4, :cond_e0
const/16 v4, 0x7f
if-eq v7, v4, :cond_e0
const/16 v4, 0x80
if-eq v7, v4, :cond_e0
const/16 v4, 0x81
if-eq v7, v4, :cond_e0
const/16 v4, 0x83
if-eq v7, v4, :cond_e0
const/16 v4, 0x84
if-eq v7, v4, :cond_e0
const/16 v4, 0x85
if-eq v7, v4, :cond_e0
const/16 v4, 0x86
if-eq v7, v4, :cond_e0
const/16 v4, 0x8d
if-eq v7, v4, :cond_e0
const/16 v4, 0x8e
if-eq v7, v4, :cond_e0
const/16 v4, 0x95
if-eq v7, v4, :cond_e0
const/16 v4, 0x96
if-eq v7, v4, :cond_e0
const/16 v4, 0x97
if-eq v7, v4, :cond_e0
const/16 v4, 0x98
if-eq v7, v4, :cond_e0
const/16 v4, 0x99
if-ne v7, v4, :cond_e8
.line 901
:cond_e0
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Script included a disabled Script Op."
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 903
:cond_e8
packed-switch v7, :pswitch_data_894
.line 934
:pswitch_eb
if-eqz v3, :cond_14
.line 937
packed-switch v7, :pswitch_data_8a4
.line 1373
:pswitch_f0
new-instance v2, Lorg/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, v7}, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 905
:pswitch_105
if-nez v3, :cond_113
.line 906
const/4 v2, 0x0
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
move-object/from16 v0, v17
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_14
.line 909
:cond_113
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_121
.line 910
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_IF on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 911
:cond_121
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
move-object/from16 v0, v17
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_14
.line 914
:pswitch_136
if-nez v3, :cond_144
.line 915
const/4 v2, 0x0
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
move-object/from16 v0, v17
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_14
.line 918
:cond_144
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_152
.line 919
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NOTIF on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 920
:cond_152
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_16a
const/4 v2, 0x1
:goto_15f
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
move-object/from16 v0, v17
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_14
:cond_16a
const/4 v2, 0x0
goto :goto_15f
.line 923
:pswitch_16c
invoke-virtual/range {v17 .. v17}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-eqz v2, :cond_17a
.line 924
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ELSE without OP_IF/NOTIF"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 925
:cond_17a
invoke-virtual/range {v17 .. v17}, 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_192
const/4 v2, 0x1
:goto_187
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v2
move-object/from16 v0, v17
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_14
:cond_192
const/4 v2, 0x0
goto :goto_187
.line 928
:pswitch_194
invoke-virtual/range {v17 .. v17}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-eqz v2, :cond_1a2
.line 929
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ENDIF without OP_IF/NOTIF"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 930
:cond_1a2
invoke-virtual/range {v17 .. v17}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
goto/16 :goto_14
.line 940
:pswitch_1a7
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 958
:pswitch_1bd
invoke-static {v7}, Lorg/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
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 963
:pswitch_1d6
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_1e4
.line 964
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_VERIFY on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 965
:cond_1e4
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-nez v2, :cond_3c
.line 966
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "OP_VERIFY failed"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 969
:pswitch_1f8
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Script called OP_RETURN"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 971
:pswitch_200
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_20e
.line 972
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_TOALTSTACK on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 973
:cond_20e
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
move-object/from16 v0, v16
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 976
:pswitch_219
invoke-virtual/range {v16 .. v16}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_227
.line 977
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_TOALTSTACK on an empty altstack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 978
:cond_227
invoke-virtual/range {v16 .. v16}, 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
goto/16 :goto_3c
.line 981
:pswitch_232
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_241
.line 982
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2DROP on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 983
:cond_241
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
.line 984
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
goto/16 :goto_3c
.line 987
:pswitch_249
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_258
.line 988
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2DUP on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 989
:cond_258
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v3
.line 990
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 991
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 992
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 995
:pswitch_272
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_281
.line 996
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_3DUP on a stack with size < 3"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 997
:cond_281
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v4
.line 998
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 999
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 1000
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 1001
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1002
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1005
:pswitch_2a6
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x4
if-ge v2, v3, :cond_2b5
.line 1006
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2OVER on a stack with size < 4"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1007
:cond_2b5
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v3
.line 1008
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 1009
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 1010
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1011
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 1012
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1015
:pswitch_2d5
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x6
if-ge v2, v3, :cond_2e4
.line 1016
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2ROT on a stack with size < 6"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1017
:cond_2e4
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1018
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 1019
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 1020
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v5
check-cast v5, [B
.line 1021
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v7
check-cast v7, [B
.line 1022
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v8
check-cast v8, [B
.line 1023
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1024
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1025
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1026
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1027
move-object/from16 v0, p4
invoke-virtual {v0, v8}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1028
move-object/from16 v0, p4
invoke-virtual {v0, v7}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1031
:pswitch_328
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x4
if-ge v2, v3, :cond_337
.line 1032
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_2SWAP on a stack with size < 4"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1033
:cond_337
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1034
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 1035
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 1036
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v5
check-cast v5, [B
.line 1037
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1038
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1039
move-object/from16 v0, p4
invoke-virtual {v0, v5}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1040
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1043
:pswitch_365
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_373
.line 1044
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_IFDUP on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1045
:cond_373
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->getLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v2
if-eqz v2, :cond_3c
.line 1046
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
goto/16 :goto_3c
.line 1049
:pswitch_38a
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
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1052
:pswitch_3a3
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_3b1
.line 1053
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_DROP on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1054
:cond_3b1
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
goto/16 :goto_3c
.line 1057
:pswitch_3b6
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_3c4
.line 1058
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_DUP on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1059
:cond_3c4
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
goto/16 :goto_3c
.line 1062
:pswitch_3cf
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_3de
.line 1063
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NIP on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1064
:cond_3de
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1065
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
.line 1066
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1069
:pswitch_3ee
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_3fd
.line 1070
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_OVER on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1071
:cond_3fd
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v2
.line 1072
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 1073
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
goto/16 :goto_3c
.line 1077
:pswitch_40f
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_41d
.line 1078
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_PICK/OP_ROLL on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1079
:cond_41d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v2
invoke-virtual {v2}, Ljava/math/BigInteger;->longValue()J
move-result-wide v4
.line 1080
const-wide/16 v2, 0x0
cmp-long v2, v4, v2
if-ltz v2, :cond_43a
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_442
.line 1081
:cond_43a
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "OP_PICK/OP_ROLL attempted to get data deeper than stack size"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1082
:cond_442
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->descendingIterator()Ljava/util/Iterator;
move-result-object v8
.line 1083
const-wide/16 v2, 0x0
:goto_448
cmp-long v9, v2, v4
if-gez v9, :cond_453
.line 1084
invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
.line 1083
const-wide/16 v10, 0x1
add-long/2addr v2, v10
goto :goto_448
.line 1085
:cond_453
invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1086
const/16 v3, 0x7a
if-ne v7, v3, :cond_460
.line 1087
invoke-interface {v8}, Ljava/util/Iterator;->remove()V
.line 1088
:cond_460
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1091
:pswitch_467
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_476
.line 1092
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_ROT on a stack with size < 3"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1093
:cond_476
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1094
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 1095
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v4
check-cast v4, [B
.line 1096
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1097
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1098
move-object/from16 v0, p4
invoke-virtual {v0, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1102
:pswitch_499
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_4a8
.line 1103
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SWAP on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1104
:cond_4a8
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1105
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v3
check-cast v3, [B
.line 1106
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1107
move-object/from16 v0, p4
invoke-virtual {v0, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 1108
const/16 v3, 0x7d
if-ne v7, v3, :cond_3c
.line 1109
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1115
:pswitch_4c9
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1117
:pswitch_4d1
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_4df
.line 1118
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SIZE on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1119
:cond_4df
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
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1125
:pswitch_4fb
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1127
:pswitch_503
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_512
.line 1128
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_EQUALVERIFY on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1129
:cond_512
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_532
const/4 v2, 0x1
new-array v2, v2, [B
const/4 v3, 0x0
const/4 v4, 0x1
aput-byte v4, v2, v3
:goto_52b
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
:cond_532
const/4 v2, 0x0
new-array v2, v2, [B
goto :goto_52b
.line 1132
:pswitch_536
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_545
.line 1133
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_EQUALVERIFY on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1134
:cond_545
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_3c
.line 1135
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "OP_EQUALVERIFY: non-equal data"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1143
:pswitch_55f
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_56d
.line 1144
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted a numeric op on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1145
:cond_56d
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v2
.line 1147
packed-switch v7, :pswitch_data_97e
.line 1174
:pswitch_57a
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 1149
:pswitch_582
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 1177
:cond_588
:goto_588
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1152
:pswitch_598
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_588
.line 1155
:pswitch_59f
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
goto :goto_588
.line 1158
:pswitch_5a4
invoke-virtual {v2}, Ljava/math/BigInteger;->signum()I
move-result v3
if-gez v3, :cond_588
.line 1159
invoke-virtual {v2}, Ljava/math/BigInteger;->negate()Ljava/math/BigInteger;
move-result-object v2
goto :goto_588
.line 1162
:pswitch_5af
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_5ba
.line 1163
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_588
.line 1165
:cond_5ba
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_588
.line 1168
:pswitch_5bd
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_5c8
.line 1169
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_588
.line 1171
:cond_5c8
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_588
.line 1181
:pswitch_5cb
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1194
:pswitch_5d3
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_5e2
.line 1195
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted a numeric op on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1196
:cond_5e2
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v3
.line 1197
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v2
.line 1200
packed-switch v7, :pswitch_data_992
.line 1268
:pswitch_5f9
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 1202
:pswitch_601
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
.line 1271
:cond_605
:goto_605
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1205
:pswitch_615
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
move-result-object v2
goto :goto_605
.line 1208
:pswitch_61a
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_62d
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_62d
.line 1209
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1211
:cond_62d
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1214
:pswitch_630
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_640
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_643
.line 1215
:cond_640
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1217
:cond_643
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1220
:pswitch_646
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_64f
.line 1221
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1223
:cond_64f
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1226
:pswitch_652
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_65b
.line 1227
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1229
:cond_65b
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1232
:pswitch_65e
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gez v2, :cond_667
.line 1233
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1235
:cond_667
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1238
:pswitch_66a
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-lez v2, :cond_673
.line 1239
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1241
:cond_673
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1244
:pswitch_676
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gtz v2, :cond_67f
.line 1245
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto :goto_605
.line 1247
:cond_67f
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto :goto_605
.line 1250
:pswitch_682
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-ltz v2, :cond_68c
.line 1251
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
goto/16 :goto_605
.line 1253
:cond_68c
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
goto/16 :goto_605
.line 1256
:pswitch_690
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-ltz v4, :cond_605
move-object v2, v3
.line 1260
goto/16 :goto_605
.line 1262
:pswitch_699
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gtz v4, :cond_605
move-object v2, v3
.line 1266
goto/16 :goto_605
.line 1278
:pswitch_6a2
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted to use disabled Script Op."
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1280
:pswitch_6aa
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x2
if-ge v2, v3, :cond_6b9
.line 1281
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_NUMEQUALVERIFY on a stack with size < 2"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1282
:cond_6b9
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v3
.line 1283
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v2
.line 1285
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_3c
.line 1286
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "OP_NUMEQUALVERIFY failed"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1289
:pswitch_6db
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
const/4 v3, 0x3
if-ge v2, v3, :cond_6ea
.line 1290
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_WITHIN on a stack with size < 3"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1291
:cond_6ea
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v3
.line 1292
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v4
.line 1293
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/script/Script;->castToBigInteger([B)Ljava/math/BigInteger;
move-result-object v2
.line 1294
invoke-virtual {v4, v2}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v4
if-gtz v4, :cond_726
invoke-virtual {v2, v3}, Ljava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
move-result v2
if-gez v2, :cond_726
.line 1295
sget-object v2, Ljava/math/BigInteger;->ONE:Ljava/math/BigInteger;
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1297
:cond_726
sget-object v2, Ljava/math/BigInteger;->ZERO:Ljava/math/BigInteger;
const/4 v3, 0x0
invoke-static {v2, v3}, Lorg/bitcoinj/core/Utils;->encodeMPI(Ljava/math/BigInteger;Z)[B
move-result-object v2
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->reverseBytes([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1300
:pswitch_738
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_746
.line 1301
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_RIPEMD160 on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1302
:cond_746
new-instance v3, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;
invoke-direct {v3}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;-><init>()V
.line 1303
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
.line 1304
const/4 v4, 0x0
array-length v5, v2
invoke-virtual {v3, v2, v4, v5}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;->update([BII)V
.line 1305
const/16 v2, 0x14
new-array v2, v2, [B
.line 1306
const/4 v4, 0x0
invoke-virtual {v3, v2, v4}, Lorg/spongycastle/crypto/digests/RIPEMD160Digest;->doFinal([BI)I
.line 1307
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1310
:pswitch_765
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_773
.line 1311
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA1 on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1313
:cond_773
:try_start_773
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_788
.catch Ljava/security/NoSuchAlgorithmException; {:try_start_773 .. :try_end_788} :catch_78a
goto/16 :goto_3c
.line 1314
:catch_78a
move-exception v2
.line 1315
new-instance v3, Ljava/lang/RuntimeException;
invoke-direct {v3, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v3
.line 1319
:pswitch_791
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_79f
.line 1320
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA256 on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1321
:cond_79f
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/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
goto/16 :goto_3c
.line 1324
:pswitch_7b0
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_7be
.line 1325
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_HASH160 on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1326
:cond_7be
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/bitcoinj/core/Utils;->sha256hash160([B)[B
move-result-object v2
move-object/from16 v0, p4
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
goto/16 :goto_3c
.line 1329
:pswitch_7cf
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->size()I
move-result v2
if-gtz v2, :cond_7dd
.line 1330
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "Attempted OP_SHA256 on an empty stack"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1331
:cond_7dd
invoke-virtual/range {p4 .. p4}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v2
check-cast v2, [B
invoke-static {v2}, Lorg/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
goto/16 :goto_3c
.line 1334
:pswitch_7ee
invoke-virtual {v2}, Lorg/bitcoinj/script/ScriptChunk;->getStartLocationInProgram()I
move-result v2
add-int/lit8 v6, v2, 0x1
.line 1335
goto/16 :goto_3c
.line 1338
:pswitch_7f6
if-nez p0, :cond_800
.line 1339
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 1340
:cond_800
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-object/from16 v8, p5
invoke-static/range {v2 .. v8}, Lorg/bitcoinj/script/Script;->executeCheckSig(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IILjava/util/Set;)V
goto/16 :goto_3c
.line 1344
:pswitch_810
if-nez p0, :cond_81a
.line 1345
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 1346
:cond_81a
move-wide/from16 v0, p1
long-to-int v9, v0
move-object/from16 v8, p0
move-object/from16 v10, p3
move-object/from16 v11, p4
move v13, v6
move v14, v7
move-object/from16 v15, p5
invoke-static/range {v8 .. v15}, Lorg/bitcoinj/script/Script;->executeMultiSig(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IIILjava/util/Set;)I
move-result v12
goto/16 :goto_3c
.line 1349
:pswitch_82d
sget-object v2, Lorg/bitcoinj/script/Script$VerifyFlag;->CHECKLOCKTIMEVERIFY:Lorg/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p5
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_856
.line 1351
sget-object v2, Lorg/bitcoinj/script/Script$VerifyFlag;->DISCOURAGE_UPGRADABLE_NOPS:Lorg/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p5
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_3c
.line 1352
new-instance v2, Lorg/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, v7}, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1356
:cond_856
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-object/from16 v8, p5
invoke-static/range {v2 .. v8}, Lorg/bitcoinj/script/Script;->executeCheckLockTimeVerify(Lorg/bitcoinj/core/Transaction;ILorg/bitcoinj/script/Script;Ljava/util/LinkedList;IILjava/util/Set;)V
goto/16 :goto_3c
.line 1367
:pswitch_866
sget-object v2, Lorg/bitcoinj/script/Script$VerifyFlag;->DISCOURAGE_UPGRADABLE_NOPS:Lorg/bitcoinj/script/Script$VerifyFlag;
move-object/from16 v0, p5
invoke-interface {v0, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_3c
.line 1368
new-instance v2, Lorg/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, v7}, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1381
:cond_885
invoke-virtual/range {v17 .. v17}, Ljava/util/LinkedList;->isEmpty()Z
move-result v2
if-nez v2, :cond_893
.line 1382
new-instance v2, Lorg/bitcoinj/core/ScriptException;
const-string v3, "OP_IF/OP_NOTIF without OP_ENDIF"
invoke-direct {v2, v3}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v2
.line 1383
:cond_893
return-void
.line 903
:pswitch_data_894
.packed-switch 0x63
:pswitch_105
:pswitch_136
:pswitch_eb
:pswitch_eb
:pswitch_16c
:pswitch_194
.end packed-switch
.line 937
:pswitch_data_8a4
.packed-switch 0x4f
:pswitch_1a7
:pswitch_f0
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_1bd
:pswitch_3c
:pswitch_f0
:pswitch_f0
:pswitch_f0
:pswitch_f0
:pswitch_f0
:pswitch_f0
:pswitch_f0
:pswitch_1d6
:pswitch_1f8
:pswitch_200
:pswitch_219
:pswitch_232
:pswitch_249
:pswitch_272
:pswitch_2a6
:pswitch_2d5
:pswitch_328
:pswitch_365
:pswitch_38a
:pswitch_3a3
:pswitch_3b6
:pswitch_3cf
:pswitch_3ee
:pswitch_40f
:pswitch_40f
:pswitch_467
:pswitch_499
:pswitch_499
:pswitch_4c9
:pswitch_4c9
:pswitch_4c9
:pswitch_4c9
:pswitch_4d1
:pswitch_4fb
:pswitch_4fb
:pswitch_4fb
:pswitch_4fb
:pswitch_503
:pswitch_536
:pswitch_f0
:pswitch_f0
:pswitch_55f
:pswitch_55f
:pswitch_5cb
:pswitch_5cb
:pswitch_55f
:pswitch_55f
:pswitch_55f
:pswitch_55f
:pswitch_5d3
:pswitch_5d3
:pswitch_6a2
:pswitch_6a2
:pswitch_6a2
:pswitch_6a2
:pswitch_6a2
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_6aa
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_5d3
:pswitch_6db
:pswitch_738
:pswitch_765
:pswitch_791
:pswitch_7b0
:pswitch_7cf
:pswitch_7ee
:pswitch_7f6
:pswitch_7f6
:pswitch_810
:pswitch_810
:pswitch_866
:pswitch_82d
:pswitch_866
:pswitch_866
:pswitch_866
:pswitch_866
:pswitch_866
:pswitch_866
:pswitch_866
:pswitch_866
.end packed-switch
.line 1147
:pswitch_data_97e
.packed-switch 0x8b
:pswitch_582
:pswitch_598
:pswitch_57a
:pswitch_57a
:pswitch_59f
:pswitch_5a4
:pswitch_5af
:pswitch_5bd
.end packed-switch
.line 1200
:pswitch_data_992
.packed-switch 0x93
:pswitch_601
:pswitch_615
:pswitch_5f9
:pswitch_5f9
:pswitch_5f9
:pswitch_5f9
:pswitch_5f9
:pswitch_61a
:pswitch_630
:pswitch_646
:pswitch_5f9
:pswitch_652
:pswitch_65e
:pswitch_66a
:pswitch_676
:pswitch_682
:pswitch_690
:pswitch_699
.end packed-switch
.end method
.method public static executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Z)V
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"J",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/LinkedList",
"<[B>;Z)V"
}
.end annotation
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 848
if-eqz p5, :cond_10
sget-object v0, Lorg/bitcoinj/script/Script$VerifyFlag;->NULLDUMMY:Lorg/bitcoinj/script/Script$VerifyFlag;
.line 849
invoke-static {v0}, Ljava/util/EnumSet;->of(Ljava/lang/Enum;)Ljava/util/EnumSet;
move-result-object v6
:goto_8
move-object v1, p0
move-wide v2, p1
move-object v4, p3
move-object v5, p4
.line 852
invoke-static/range {v1 .. v6}, Lorg/bitcoinj/script/Script;->executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Ljava/util/Set;)V
.line 853
return-void
.line 849
:cond_10
const-class v0, Lorg/bitcoinj/script/Script$VerifyFlag;
.line 850
invoke-static {v0}, Ljava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
move-result-object v6
goto :goto_8
.end method
.method private findKeyInRedeem(Lorg/bitcoinj/core/ECKey;)I
.registers 6
.prologue
const/4 v1, 0x0
.line 506
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 507
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v2, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
add-int/lit8 v2, v2, -0x2
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v2
.line 508
:goto_26
if-ge v1, v2, :cond_43
.line 509
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
add-int/lit8 v3, v1, 0x1
invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-virtual {p1}, Lorg/bitcoinj/core/ECKey;->getPubKey()[B
move-result-object v3
invoke-static {v0, v3}, Ljava/util/Arrays;->equals([B[B)Z
move-result v0
if-eqz v0, :cond_3f
.line 510
return v1
.line 508
:cond_3f
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_26
.line 514
:cond_43
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Could not find matching key "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1}, Lorg/bitcoinj/core/ECKey;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " in script "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private findSigInRedeem([BLorg/bitcoinj/core/Sha256Hash;)I
.registers 8
.prologue
const/4 v1, 0x0
.line 534
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v0
invoke-static {v0}, Lcom/google/common/base/n;->checkArgument(Z)V
.line 535
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v2, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
add-int/lit8 v2, v2, -0x2
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v2
.line 536
const/4 v0, 0x1
invoke-static {p1, v0}, Lorg/bitcoinj/crypto/TransactionSignature;->decodeFromBitcoin([BZ)Lorg/bitcoinj/crypto/TransactionSignature;
move-result-object v3
.line 537
:goto_2b
if-ge v1, v2, :cond_48
.line 538
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
add-int/lit8 v4, v1, 0x1
invoke-interface {v0, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v0}, Lorg/bitcoinj/core/ECKey;->fromPublicOnly([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
invoke-virtual {v0, p2, v3}, Lorg/bitcoinj/core/ECKey;->verify(Lorg/bitcoinj/core/Sha256Hash;Lorg/bitcoinj/core/ECKey$ECDSASignature;)Z
move-result v0
if-eqz v0, :cond_44
.line 539
return v1
.line 537
:cond_44
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_2b
.line 543
:cond_48
new-instance v0, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Could not find matching key for signature on "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p2}, Lorg/bitcoinj/core/Sha256Hash;->toString()Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
const-string v2, " sig "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
sget-object v2, Lorg/bitcoinj/core/Utils;->HEX:Lcom/google/common/io/BaseEncoding;
invoke-virtual {v2, p1}, Lcom/google/common/io/BaseEncoding;->encode([B)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static getP2SHSigOpCount([B)J
.registers 5
.prologue
.line 613
new-instance v2, Lorg/bitcoinj/script/Script;
invoke-direct {v2}, Lorg/bitcoinj/script/Script;-><init>()V
.line 615
:try_start_5
invoke-direct {v2, p0}, Lorg/bitcoinj/script/Script;->parse([B)V
:try_end_8
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_5 .. :try_end_8} :catch_43
.line 619
:goto_8
iget-object v0, v2, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
add-int/lit8 v0, v0, -0x1
move v1, v0
:goto_11
if-ltz v1, :cond_40
.line 620
iget-object v0, v2, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v0
if-nez v0, :cond_3c
.line 621
new-instance v3, Lorg/bitcoinj/script/Script;
invoke-direct {v3}, Lorg/bitcoinj/script/Script;-><init>()V
.line 622
iget-object v0, v2, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-direct {v3, v0}, Lorg/bitcoinj/script/Script;->parse([B)V
.line 623
iget-object v0, v3, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x1
invoke-static {v0, v1}, Lorg/bitcoinj/script/Script;->getSigOpCount(Ljava/util/List;Z)I
move-result v0
int-to-long v0, v0
.line 625
:goto_3b
return-wide v0
.line 619
:cond_3c
add-int/lit8 v0, v1, -0x1
move v1, v0
goto :goto_11
.line 625
:cond_40
const-wide/16 v0, 0x0
goto :goto_3b
:catch_43
move-exception v0
goto :goto_8
.end method
.method private getQuickProgram()[B
.registers 2
.prologue
.line 1641
iget-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
if-eqz v0, :cond_7
.line 1642
iget-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
.line 1643
:goto_6
return-object v0
:cond_7
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v0
goto :goto_6
.end method
.method private static getSigOpCount(Ljava/util/List;Z)I
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/ScriptChunk;",
">;Z)I"
}
.end annotation
.prologue
.line 551
const/4 v1, 0x0
.line 552
const/16 v0, 0xff
.line 553
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
move v2, v1
move v1, v0
:goto_9
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_3c
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 554
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v4
if-eqz v4, :cond_3d
.line 555
iget v4, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
packed-switch v4, :pswitch_data_40
.line 570
:goto_20
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
move v1, v2
:goto_23
move v2, v1
move v1, v0
.line 572
goto :goto_9
.line 558
:pswitch_26
add-int/lit8 v2, v2, 0x1
.line 559
goto :goto_20
.line 562
:pswitch_29
if-eqz p1, :cond_39
const/16 v4, 0x51
if-lt v1, v4, :cond_39
const/16 v4, 0x60
if-gt v1, v4, :cond_39
.line 563
invoke-static {v1}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v1
add-int/2addr v2, v1
goto :goto_20
.line 565
:cond_39
add-int/lit8 v2, v2, 0x14
goto :goto_20
.line 573
:cond_3c
return v2
:cond_3d
move v0, v1
move v1, v2
goto :goto_23
.line 555
:pswitch_data_40
.packed-switch 0xac
:pswitch_26
:pswitch_26
:pswitch_29
:pswitch_29
.end packed-switch
.end method
.method public static getSigOpCount([B)I
.registers 3
.prologue
.line 600
new-instance v0, Lorg/bitcoinj/script/Script;
invoke-direct {v0}, Lorg/bitcoinj/script/Script;-><init>()V
.line 602
:try_start_5
invoke-direct {v0, p0}, Lorg/bitcoinj/script/Script;->parse([B)V
:try_end_8
.catch Lorg/bitcoinj/core/ScriptException; {:try_start_5 .. :try_end_8} :catch_10
.line 606
:goto_8
iget-object v0, v0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x0
invoke-static {v0, v1}, Lorg/bitcoinj/script/Script;->getSigOpCount(Ljava/util/List;Z)I
move-result v0
return v0
:catch_10
move-exception v1
goto :goto_8
.end method
.method private parse([B)V
.registers 12
.prologue
.line 180
new-instance v0, Ljava/util/ArrayList;
const/4 v1, 0x5
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(I)V
iput-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 181
new-instance v3, Ljava/io/ByteArrayInputStream;
invoke-direct {v3, p1}, Ljava/io/ByteArrayInputStream;-><init>([B)V
.line 182
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v4
.line 183
:goto_11
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
if-lez v0, :cond_f1
.line 184
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
sub-int v2, v4, v0
.line 185
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v5
.line 187
const-wide/16 v0, -0x1
.line 188
if-ltz v5, :cond_4b
const/16 v6, 0x4c
if-ge v5, v6, :cond_4b
.line 190
int-to-long v0, v5
.line 206
:cond_2a
:goto_2a
const-wide/16 v6, -0x1
cmp-long v6, v0, v6
if-nez v6, :cond_b8
.line 207
new-instance v0, Lorg/bitcoinj/script/ScriptChunk;
const/4 v1, 0x0
invoke-direct {v0, v5, v1, v2}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
.line 216
:goto_36
sget-object v5, Lorg/bitcoinj/script/Script;->STANDARD_TRANSACTION_SCRIPT_CHUNKS:[Lorg/bitcoinj/script/ScriptChunk;
array-length v6, v5
const/4 v1, 0x0
move v2, v1
move-object v1, v0
:goto_3c
if-ge v2, v6, :cond_ea
aget-object v0, v5, v2
.line 217
invoke-virtual {v0, v1}, Lorg/bitcoinj/script/ScriptChunk;->equals(Ljava/lang/Object;)Z
move-result v7
if-eqz v7, :cond_f2
.line 216
:goto_46
add-int/lit8 v1, v2, 0x1
move v2, v1
move-object v1, v0
goto :goto_3c
.line 191
:cond_4b
const/16 v6, 0x4c
if-ne v5, v6, :cond_63
.line 192
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
if-gtz v0, :cond_5d
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 193
:cond_5d
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->read()I
move-result v0
int-to-long v0, v0
goto :goto_2a
.line 194
:cond_63
const/16 v6, 0x4d
if-ne v5, v6, :cond_83
.line 196
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
const/4 v1, 0x2
if-ge v0, v1, :cond_76
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 197
: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 198
:cond_83
const/16 v6, 0x4e
if-ne v5, v6, :cond_2a
.line 201
invoke-virtual {v3}, Ljava/io/ByteArrayInputStream;->available()I
move-result v0
const/4 v1, 0x4
if-ge v0, v1, :cond_96
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Unexpected end of script"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 202
: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 209
: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 210
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Push of data element that is larger than remaining data"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 211
:cond_c9
long-to-int v6, v0
new-array v6, v6, [B
.line 212
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 213
new-instance v0, Lorg/bitcoinj/script/ScriptChunk;
invoke-direct {v0, v5, v6, v2}, Lorg/bitcoinj/script/ScriptChunk;-><init>(I[BI)V
goto/16 :goto_36
.line 212
:cond_e8
const/4 v0, 0x0
goto :goto_de
.line 219
:cond_ea
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto/16 :goto_11
.line 221
:cond_f1
return-void
:cond_f2
move-object v0, v1
goto/16 :goto_46
.end method
.method public static removeAllInstancesOf([B[B)[B
.registers 10
.prologue
const/16 v7, 0x4c
const/4 v1, 0x0
.line 750
new-instance v3, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;
array-length v0, p0
invoke-direct {v3, v0}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;-><init>(I)V
move v0, v1
.line 753
:goto_a
array-length v2, p0
if-ge v0, v2, :cond_76
.line 754
invoke-static {p0, v0, p1}, Lorg/bitcoinj/script/Script;->equalsRange([BI[B)Z
move-result v4
.line 756
add-int/lit8 v5, v0, 0x1
aget-byte v0, p0, v0
and-int/lit16 v2, v0, 0xff
.line 758
if-ltz v2, :cond_2c
if-ge v2, v7, :cond_2c
move v0, v2
.line 771
:goto_1c
if-nez v4, :cond_2a
.line 773
:try_start_1e
invoke-virtual {v3, v2}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;->write(I)V
.line 774
add-int v2, v5, v0
invoke-static {p0, v5, v2}, Ljava/util/Arrays;->copyOfRange([BII)[B
move-result-object v2
invoke-virtual {v3, v2}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;->write([B)V
:try_end_2a
.catch Ljava/io/IOException; {:try_start_1e .. :try_end_2a} :catch_6f
.line 779
:cond_2a
add-int/2addr v0, v5
.line 780
goto :goto_a
.line 760
:cond_2c
if-ne v2, v7, :cond_35
.line 761
aget-byte v0, p0, v5
and-int/lit16 v0, v0, 0xff
add-int/lit8 v0, v0, 0x1
goto :goto_1c
.line 762
:cond_35
const/16 v0, 0x4d
if-ne v2, v0, :cond_49
.line 763
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_1c
.line 765
:cond_49
const/16 v0, 0x4e
if-ne v2, v0, :cond_7b
.line 766
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_1c
.line 775
:catch_6f
move-exception v0
.line 776
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 781
:cond_76
invoke-virtual {v3}, Lorg/bitcoinj/core/UnsafeByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
:cond_7b
move v0, v1
goto :goto_1c
.end method
.method public static removeAllInstancesOfOp([BI)[B
.registers 5
.prologue
.line 788
const/4 v0, 0x1
new-array v0, v0, [B
const/4 v1, 0x0
int-to-byte v2, p1
aput-byte v2, v0, v1
invoke-static {p0, v0}, Lorg/bitcoinj/script/Script;->removeAllInstancesOf([B[B)[B
move-result-object v0
return-object v0
.end method
.method public static writeBytes(Ljava/io/OutputStream;[B)V
.registers 5
.prologue
const/16 v2, 0x4c
.line 378
array-length v0, p1
if-ge v0, v2, :cond_d
.line 379
array-length v0, p1
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 380
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
.line 389
:goto_c
return-void
.line 381
:cond_d
array-length v0, p1
const/16 v1, 0x100
if-ge v0, v1, :cond_1d
.line 382
invoke-virtual {p0, v2}, Ljava/io/OutputStream;->write(I)V
.line 383
array-length v0, p1
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 384
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
goto :goto_c
.line 385
:cond_1d
array-length v0, p1
const/high16 v1, 0x10000
if-ge v0, v1, :cond_39
.line 386
const/16 v0, 0x4d
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 387
array-length v0, p1
and-int/lit16 v0, v0, 0xff
invoke-virtual {p0, v0}, Ljava/io/OutputStream;->write(I)V
.line 388
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 389
invoke-virtual {p0, p1}, Ljava/io/OutputStream;->write([B)V
goto :goto_c
.line 391
: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 correctlySpends(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;)V
.registers 11
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 1570
sget-object v5, Lorg/bitcoinj/script/Script;->ALL_VERIFY_FLAGS:Ljava/util/EnumSet;
move-object v0, p0
move-object v1, p1
move-wide v2, p2
move-object v4, p4
invoke-virtual/range {v0 .. v5}, Lorg/bitcoinj/script/Script;->correctlySpends(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/Set;)V
.line 1571
return-void
.end method
.method public correctlySpends(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/Set;)V
.registers 14
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/bitcoinj/core/Transaction;",
"J",
"Lorg/bitcoinj/script/Script;",
"Ljava/util/Set",
"<",
"Lorg/bitcoinj/script/Script$VerifyFlag;",
">;)V"
}
.end annotation
.prologue
const/16 v2, 0x2710
.line 1587
:try_start_2
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->getParams()Lorg/bitcoinj/core/NetworkParameters;
move-result-object v0
invoke-virtual {v0}, Lorg/bitcoinj/core/NetworkParameters;->getDefaultSerializer()Lorg/bitcoinj/core/MessageSerializer;
move-result-object v0
invoke-virtual {p1}, Lorg/bitcoinj/core/Transaction;->bitcoinSerialize()[B
move-result-object v1
invoke-virtual {v0, v1}, Lorg/bitcoinj/core/MessageSerializer;->makeTransaction([B)Lorg/bitcoinj/core/Transaction;
:try_end_11
.catch Lorg/bitcoinj/core/ProtocolException; {:try_start_2 .. :try_end_11} :catch_28
move-result-object v1
.line 1591
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v0
array-length v0, v0
if-gt v0, v2, :cond_20
invoke-virtual {p4}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v0
array-length v0, v0
if-le v0, v2, :cond_2f
.line 1592
:cond_20
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Script larger than 10,000 bytes"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1588
:catch_28
move-exception v0
.line 1589
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 1594
:cond_2f
new-instance v5, Ljava/util/LinkedList;
invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V
.line 1595
const/4 v0, 0x0
move-wide v2, p2
move-object v4, p0
move-object v6, p5
.line 1597
invoke-static/range {v1 .. v6}, Lorg/bitcoinj/script/Script;->executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Ljava/util/Set;)V
.line 1598
sget-object v2, Lorg/bitcoinj/script/Script$VerifyFlag;->P2SH:Lorg/bitcoinj/script/Script$VerifyFlag;
invoke-interface {p5, v2}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_e6
.line 1599
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0, v5}, Ljava/util/LinkedList;-><init>(Ljava/util/Collection;)V
move-object v7, v0
:goto_49
move-wide v2, p2
move-object v4, p4
move-object v6, p5
.line 1600
invoke-static/range {v1 .. v6}, Lorg/bitcoinj/script/Script;->executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Ljava/util/Set;)V
.line 1602
invoke-virtual {v5}, Ljava/util/LinkedList;->size()I
move-result v0
if-nez v0, :cond_5d
.line 1603
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Stack empty at end of script execution."
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1605
:cond_5d
invoke-virtual {v5}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
invoke-static {v0}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v0
if-nez v0, :cond_7e
.line 1606
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script resulted in a non-true stack: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v5}, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1621
:cond_7e
sget-object v0, Lorg/bitcoinj/script/Script$VerifyFlag;->P2SH:Lorg/bitcoinj/script/Script$VerifyFlag;
invoke-interface {p5, v0}, Ljava/util/Set;->contains(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_e5
invoke-virtual {p4}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_e5
.line 1622
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_92
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_b2
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 1623
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v3
if-eqz v3, :cond_92
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
const/16 v3, 0x60
if-le v0, v3, :cond_92
.line 1624
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Attempted to spend a P2SH scriptPubKey with a script that contained script ops"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1626
:cond_b2
invoke-virtual {v7}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
.line 1627
new-instance v4, Lorg/bitcoinj/script/Script;
invoke-direct {v4, v0}, Lorg/bitcoinj/script/Script;-><init>([B)V
move-wide v2, p2
move-object v5, v7
move-object v6, p5
.line 1629
invoke-static/range {v1 .. v6}, Lorg/bitcoinj/script/Script;->executeScript(Lorg/bitcoinj/core/Transaction;JLorg/bitcoinj/script/Script;Ljava/util/LinkedList;Ljava/util/Set;)V
.line 1631
invoke-virtual {v7}, Ljava/util/LinkedList;->size()I
move-result v0
if-nez v0, :cond_d1
.line 1632
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "P2SH stack empty at end of script execution."
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1634
:cond_d1
invoke-virtual {v7}, Ljava/util/LinkedList;->pollLast()Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
invoke-static {v0}, Lorg/bitcoinj/script/Script;->castToBool([B)Z
move-result v0
if-nez v0, :cond_e5
.line 1635
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "P2SH script execution resulted in a non-true stack"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 1637
:cond_e5
return-void
:cond_e6
move-object v7, v0
goto/16 :goto_49
.end method
.method public createEmptyInputScript(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/script/Script;
.registers 7
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
const/4 v3, 0x0
.line 447
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v2
if-eqz v2, :cond_17
.line 448
if-eqz p1, :cond_15
:goto_b
const-string v1, "Key required to create pay-to-address input script"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 449
invoke-static {v3, p1}, Lorg/bitcoinj/script/ScriptBuilder;->createInputScript(Lorg/bitcoinj/crypto/TransactionSignature;Lorg/bitcoinj/core/ECKey;)Lorg/bitcoinj/script/Script;
move-result-object v0
.line 454
:goto_14
return-object v0
:cond_15
move v0, v1
.line 448
goto :goto_b
.line 450
:cond_17
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v2
if-eqz v2, :cond_22
.line 451
invoke-static {v3}, Lorg/bitcoinj/script/ScriptBuilder;->createInputScript(Lorg/bitcoinj/crypto/TransactionSignature;)Lorg/bitcoinj/script/Script;
move-result-object v0
goto :goto_14
.line 452
:cond_22
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v2
if-eqz v2, :cond_36
.line 453
if-eqz p2, :cond_34
:goto_2a
const-string v1, "Redeem script required to create P2SH input script"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 454
invoke-static {v3, p2}, Lorg/bitcoinj/script/ScriptBuilder;->createP2SHMultiSigInputScript(Ljava/util/List;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/script/Script;
move-result-object v0
goto :goto_14
:cond_34
move v0, v1
.line 453
goto :goto_2a
.line 456
:cond_36
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Do not understand script type: "
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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public equals(Ljava/lang/Object;)Z
.registers 4
.prologue
.line 1664
if-ne p0, p1, :cond_4
const/4 v0, 0x1
.line 1666
:goto_3
return v0
.line 1665
: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 1666
:cond_12
invoke-direct {p0}, Lorg/bitcoinj/script/Script;->getQuickProgram()[B
move-result-object v0
check-cast p1, Lorg/bitcoinj/script/Script;
invoke-direct {p1}, Lorg/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 getCLTVPaymentChannelExpiry()Ljava/math/BigInteger;
.registers 4
.prologue
.line 330
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z
move-result v0
if-nez v0, :cond_1b
.line 331
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script not a standard CHECKLOCKTIMEVERIFY transaction: "
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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 333
:cond_1b
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x4
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
const/4 v1, 0x5
invoke-static {v0, v1}, Lorg/bitcoinj/script/Script;->castToBigInteger([BI)Ljava/math/BigInteger;
move-result-object v0
return-object v0
.end method
.method public getCLTVPaymentChannelRecipientPubKey()[B
.registers 4
.prologue
.line 323
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z
move-result v0
if-nez v0, :cond_1b
.line 324
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script not a standard CHECKLOCKTIMVERIFY transaction: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 326
:cond_1b
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
return-object v0
.end method
.method public getCLTVPaymentChannelSenderPubKey()[B
.registers 4
.prologue
.line 311
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToCLTVPaymentChannel()Z
move-result v0
if-nez v0, :cond_1b
.line 312
new-instance v0, Lorg/bitcoinj/core/ScriptException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Script not a standard CHECKLOCKTIMVERIFY transaction: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, 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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 314
:cond_1b
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/16 v1, 0x8
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
return-object v0
.end method
.method public getChunks()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/script/ScriptChunk;",
">;"
}
.end annotation
.prologue
.line 160
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v0
return-object v0
.end method
.method public getCreationTimeSeconds()J
.registers 3
.prologue
.line 126
iget-wide v0, p0, Lorg/bitcoinj/script/Script;->creationTimeSeconds:J
return-wide v0
.end method
.method public getFromAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
.registers 4
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 343
new-instance v0, Lorg/bitcoinj/core/Address;
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getPubKey()[B
move-result-object v1
invoke-static {v1}, Lorg/bitcoinj/core/Utils;->sha256hash160([B)[B
move-result-object v1
invoke-direct {v0, p1, v1}, Lorg/bitcoinj/core/Address;-><init>(Lorg/bitcoinj/core/NetworkParameters;[B)V
return-object v0
.end method
.method public getNumberOfBytesRequiredToSpend(Lorg/bitcoinj/core/ECKey;Lorg/bitcoinj/script/Script;)I
.registers 5
.prologue
.line 651
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_1d
.line 653
if-eqz p2, :cond_1b
const/4 v0, 0x1
:goto_9
const-string v1, "P2SH script requires redeemScript to be spent"
invoke-static {v0, v1}, Lcom/google/common/base/n;->checkArgument(ZLjava/lang/Object;)V
.line 654
invoke-virtual {p2}, Lorg/bitcoinj/script/Script;->getNumberOfSignaturesRequiredToSpend()I
move-result v0
mul-int/lit8 v0, v0, 0x4b
invoke-virtual {p2}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v1
array-length v1, v1
add-int/2addr v0, v1
.line 664
:goto_1a
return v0
.line 653
:cond_1b
const/4 v0, 0x0
goto :goto_9
.line 655
:cond_1d
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-eqz v0, :cond_2c
.line 657
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getNumberOfSignaturesRequiredToSpend()I
move-result v0
mul-int/lit8 v0, v0, 0x4b
add-int/lit8 v0, v0, 0x1
goto :goto_1a
.line 658
:cond_2c
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v0
if-eqz v0, :cond_35
.line 660
const/16 v0, 0x4b
goto :goto_1a
.line 661
:cond_35
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_48
.line 664
if-eqz p1, :cond_45
invoke-virtual {p1}, Lorg/bitcoinj/core/ECKey;->getPubKey()[B
move-result-object v0
array-length v0, v0
:goto_42
add-int/lit8 v0, v0, 0x4b
goto :goto_1a
:cond_45
const/16 v0, 0x41
goto :goto_42
.line 666
:cond_48
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 getNumberOfSignaturesRequiredToSpend()I
.registers 3
.prologue
.line 632
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-eqz v0, :cond_16
.line 634
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
.line 635
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v0
.line 638
:goto_15
return v0
.line 636
:cond_16
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-nez v0, :cond_22
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v0
if-eqz v0, :cond_24
.line 638
:cond_22
const/4 v0, 0x1
goto :goto_15
.line 639
:cond_24
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_32
.line 640
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 642
: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 getProgram()[B
.registers 4
.prologue
.line 145
:try_start_0
iget-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
if-eqz v0, :cond_e
.line 146
iget-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
iget-object v1, p0, Lorg/bitcoinj/script/Script;->program:[B
array-length v1, v1
invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v0
.line 152
:goto_d
return-object v0
.line 147
:cond_e
new-instance v1, Ljava/io/ByteArrayOutputStream;
invoke-direct {v1}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 148
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_19
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_30
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 149
invoke-virtual {v0, v1}, Lorg/bitcoinj/script/ScriptChunk;->write(Ljava/io/OutputStream;)V
:try_end_28
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_28} :catch_29
goto :goto_19
.line 153
:catch_29
move-exception v0
.line 154
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.line 151
:cond_30
:try_start_30
invoke-virtual {v1}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
iput-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
.line 152
iget-object v0, p0, Lorg/bitcoinj/script/Script;->program:[B
:try_end_38
.catch Ljava/io/IOException; {:try_start_30 .. :try_end_38} :catch_29
goto :goto_d
.end method
.method public getPubKey()[B
.registers 6
.prologue
const/4 v4, 0x2
.line 287
iget-object v0, p0, Lorg/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 288
new-instance v0, Lorg/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, Lorg/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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 290
:cond_24
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
.line 291
iget-object v2, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
.line 292
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
.line 293
iget-object v1, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
.line 294
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 299
:goto_45
return-object v0
.line 297
:cond_46
const/16 v1, 0xac
invoke-virtual {v0, v1}, Lorg/bitcoinj/script/ScriptChunk;->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 299
goto :goto_45
.line 301
:cond_55
new-instance v0, Lorg/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}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getPubKeyHash()[B
.registers 3
.prologue
.line 270
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_12
.line 271
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
.line 273
:goto_11
return-object v0
.line 272
:cond_12
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_24
.line 273
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
goto :goto_11
.line 275
:cond_24
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Script not in the standard scriptPubKey form"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getPubKeys()Ljava/util/List;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lorg/bitcoinj/core/ECKey;",
">;"
}
.end annotation
.prologue
.line 523
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v0
if-nez v0, :cond_e
.line 524
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Only usable for multisig scripts."
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.line 3088
:cond_e
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 527
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v1, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
add-int/lit8 v1, v1, -0x2
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v3
.line 528
const/4 v0, 0x0
move v1, v0
:goto_2b
if-ge v1, v3, :cond_44
.line 529
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
add-int/lit8 v4, v1, 0x1
invoke-interface {v0, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v0}, Lorg/bitcoinj/core/ECKey;->fromPublicOnly([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 528
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_2b
.line 530
:cond_44
return-object v2
.end method
.method public getScriptSigWithSignature(Lorg/bitcoinj/script/Script;[BI)Lorg/bitcoinj/script/Script;
.registers 8
.prologue
const/4 v1, 0x0
const/4 v0, 0x1
.line 464
.line 466
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v2
if-eqz v2, :cond_e
move v1, v0
.line 474
:cond_9
:goto_9
invoke-static {p1, p2, p3, v1, v0}, Lorg/bitcoinj/script/ScriptBuilder;->updateScriptWithSignature(Lorg/bitcoinj/script/Script;[BIII)Lorg/bitcoinj/script/Script;
move-result-object v0
return-object v0
.line 469
:cond_e
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToMultiSig()Z
move-result v2
if-eqz v2, :cond_18
move v3, v1
move v1, v0
move v0, v3
.line 470
goto :goto_9
.line 471
:cond_18
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v2
if-nez v2, :cond_9
move v0, v1
goto :goto_9
.end method
.method public getScriptType()Lorg/bitcoinj/script/Script$ScriptType;
.registers 3
.prologue
.line 1651
sget-object v0, Lorg/bitcoinj/script/Script$ScriptType;->NO_TYPE:Lorg/bitcoinj/script/Script$ScriptType;
.line 1652
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v1
if-eqz v1, :cond_b
.line 1653
sget-object v0, Lorg/bitcoinj/script/Script$ScriptType;->P2PKH:Lorg/bitcoinj/script/Script$ScriptType;
.line 1659
:cond_a
:goto_a
return-object v0
.line 1654
:cond_b
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v1
if-eqz v1, :cond_14
.line 1655
sget-object v0, Lorg/bitcoinj/script/Script$ScriptType;->PUB_KEY:Lorg/bitcoinj/script/Script$ScriptType;
goto :goto_a
.line 1656
:cond_14
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v1
if-eqz v1, :cond_a
.line 1657
sget-object v0, Lorg/bitcoinj/script/Script$ScriptType;->P2SH:Lorg/bitcoinj/script/Script$ScriptType;
goto :goto_a
.end method
.method public getSigInsertionIndex(Lorg/bitcoinj/core/Sha256Hash;Lorg/bitcoinj/core/ECKey;)I
.registers 9
.prologue
.line 485
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v1, 0x1
iget-object v2, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
add-int/lit8 v2, v2, -0x1
invoke-interface {v0, v1, v2}, Ljava/util/List;->subList(II)Ljava/util/List;
move-result-object v1
.line 486
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v2, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v2
add-int/lit8 v2, v2, -0x1
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 487
iget-object v2, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v2}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 488
new-instance v2, Lorg/bitcoinj/script/Script;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-direct {v2, v0}, Lorg/bitcoinj/script/Script;-><init>([B)V
.line 490
const/4 v0, 0x0
.line 491
invoke-direct {v2, p2}, Lorg/bitcoinj/script/Script;->findKeyInRedeem(Lorg/bitcoinj/core/ECKey;)I
move-result v3
.line 492
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
move v1, v0
:goto_35
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_52
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
.line 493
iget v5, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
if-eqz v5, :cond_57
.line 496
iget-object v5, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-static {v5}, Lcom/google/common/base/n;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 497
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
invoke-direct {v2, v0, p1}, Lorg/bitcoinj/script/Script;->findSigInRedeem([BLorg/bitcoinj/core/Sha256Hash;)I
move-result v0
if-ge v3, v0, :cond_53
.line 502
:cond_52
return v1
.line 499
:cond_53
add-int/lit8 v0, v1, 0x1
:goto_55
move v1, v0
.line 501
goto :goto_35
:cond_57
move v0, v1
goto :goto_55
.end method
.method public getToAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
.registers 3
.prologue
.line 350
const/4 v0, 0x0
invoke-virtual {p0, p1, v0}, Lorg/bitcoinj/script/Script;->getToAddress(Lorg/bitcoinj/core/NetworkParameters;Z)Lorg/bitcoinj/core/Address;
move-result-object v0
return-object v0
.end method
.method public getToAddress(Lorg/bitcoinj/core/NetworkParameters;Z)Lorg/bitcoinj/core/Address;
.registers 5
.prologue
.line 361
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToAddress()Z
move-result v0
if-eqz v0, :cond_10
.line 362
new-instance v0, Lorg/bitcoinj/core/Address;
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getPubKeyHash()[B
move-result-object v1
invoke-direct {v0, p1, v1}, Lorg/bitcoinj/core/Address;-><init>(Lorg/bitcoinj/core/NetworkParameters;[B)V
.line 366
:goto_f
return-object v0
.line 363
:cond_10
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
if-eqz v0, :cond_1b
.line 364
invoke-static {p1, p0}, Lorg/bitcoinj/core/Address;->fromP2SHScript(Lorg/bitcoinj/core/NetworkParameters;Lorg/bitcoinj/script/Script;)Lorg/bitcoinj/core/Address;
move-result-object v0
goto :goto_f
.line 365
:cond_1b
if-eqz p2, :cond_30
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isSentToRawPubKey()Z
move-result v0
if-eqz v0, :cond_30
.line 366
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getPubKey()[B
move-result-object v0
invoke-static {v0}, Lorg/bitcoinj/core/ECKey;->fromPublicOnly([B)Lorg/bitcoinj/core/ECKey;
move-result-object v0
invoke-virtual {v0, p1}, Lorg/bitcoinj/core/ECKey;->toAddress(Lorg/bitcoinj/core/NetworkParameters;)Lorg/bitcoinj/core/Address;
move-result-object v0
goto :goto_f
.line 368
:cond_30
new-instance v0, Lorg/bitcoinj/core/ScriptException;
const-string v1, "Cannot cast this script to a pay-to-address type"
invoke-direct {v0, v1}, Lorg/bitcoinj/core/ScriptException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public hashCode()I
.registers 2
.prologue
.line 1671
invoke-direct {p0}, Lorg/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 isOpReturn()Z
.registers 4
.prologue
const/4 v1, 0x0
.line 832
iget-object v0, p0, Lorg/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, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x6a
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->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 isPayToScriptHash()Z
.registers 6
.prologue
const/4 v0, 0x1
const/4 v1, 0x0
.line 687
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->getProgram()[B
move-result-object v2
.line 688
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 isSentToAddress()Z
.registers 5
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 241
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 242
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0x76
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 243
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0xa9
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x2
.line 244
invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->data:[B
array-length v0, v0
const/16 v3, 0x14
if-ne v0, v3, :cond_5f
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x3
.line 245
invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0x88
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
const/4 v3, 0x4
.line 246
invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0xac
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_5f
move v0, v1
:goto_5e
return v0
:cond_5f
move v0, v2
.line 241
goto :goto_5e
.end method
.method public isSentToCLTVPaymentChannel()Z
.registers 4
.prologue
const/4 v1, 0x0
.line 721
iget-object v0, p0, Lorg/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 733
:goto_c
return v0
.line 723
:cond_d
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x63
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_1f
move v0, v1
goto :goto_c
.line 725
:cond_1f
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0xad
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_32
move v0, v1
goto :goto_c
.line 726
:cond_32
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x67
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_45
move v0, v1
goto :goto_c
.line 728
:cond_45
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0xb1
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_58
move v0, v1
goto :goto_c
.line 729
:cond_58
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x75
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_6b
move v0, v1
goto :goto_c
.line 730
:cond_6b
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0x68
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_7e
move v0, v1
goto :goto_c
.line 732
:cond_7e
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v2, 0xac
invoke-virtual {v0, v2}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_93
move v0, v1
goto/16 :goto_c
.line 733
:cond_93
const/4 v0, 0x1
goto/16 :goto_c
.end method
.method public isSentToMultiSig()Z
.registers 5
.prologue
const/4 v2, 0x1
const/4 v1, 0x0
.line 698
iget-object v0, p0, Lorg/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 717
:goto_c
return v0
.line 699
:cond_d
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v3, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
.line 701
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v3
if-nez v3, :cond_25
move v0, v1
goto :goto_c
.line 702
:cond_25
const/16 v3, 0xae
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v3
if-nez v3, :cond_37
const/16 v3, 0xaf
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-nez v0, :cond_37
move v0, v1
goto :goto_c
.line 705
:cond_37
:try_start_37
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
iget-object v3, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
.line 706
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v3
if-nez v3, :cond_4f
move v0, v1
goto :goto_c
.line 707
:cond_4f
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
move-result v0
.line 708
if-lez v0, :cond_61
iget-object v3, p0, Lorg/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 709
:goto_64
iget-object v0, p0, Lorg/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 710
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v0
if-eqz v0, :cond_7e
move v0, v1
goto :goto_c
.line 709
:cond_7e
add-int/lit8 v0, v3, 0x1
move v3, v0
goto :goto_64
.line 713
:cond_82
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget v0, v0, Lorg/bitcoinj/script/ScriptChunk;->opcode:I
invoke-static {v0}, Lorg/bitcoinj/script/Script;->decodeFromOpN(I)I
:try_end_90
.catch Ljava/lang/IllegalStateException; {:try_start_37 .. :try_end_90} :catch_96
move-result v0
if-gtz v0, :cond_9a
move v0, v1
goto/16 :goto_c
.line 715
:catch_96
move-exception v0
move v0, v1
goto/16 :goto_c
:cond_9a
move v0, v2
.line 717
goto/16 :goto_c
.end method
.method public isSentToP2SH()Z
.registers 2
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.prologue
.line 254
invoke-virtual {p0}, Lorg/bitcoinj/script/Script;->isPayToScriptHash()Z
move-result v0
return v0
.end method
.method public isSentToRawPubKey()Z
.registers 5
.prologue
const/4 v1, 0x1
const/4 v2, 0x0
.line 230
iget-object v0, p0, Lorg/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, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
const/16 v3, 0xac
invoke-virtual {v0, v3}, Lorg/bitcoinj/script/ScriptChunk;->equalsOpCode(I)Z
move-result v0
if-eqz v0, :cond_38
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
.line 231
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lorg/bitcoinj/script/ScriptChunk;
invoke-virtual {v0}, Lorg/bitcoinj/script/ScriptChunk;->isOpCode()Z
move-result v0
if-nez v0, :cond_38
iget-object v0, p0, Lorg/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, Lorg/bitcoinj/script/ScriptChunk;
iget-object v0, v0, Lorg/bitcoinj/script/ScriptChunk;->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 230
goto :goto_37
.end method
.method public setCreationTimeSeconds(J)V
.registers 4
.prologue
.line 130
iput-wide p1, p0, Lorg/bitcoinj/script/Script;->creationTimeSeconds:J
.line 131
return-void
.end method
.method public toString()Ljava/lang/String;
.registers 2
.prologue
.line 138
iget-object v0, p0, Lorg/bitcoinj/script/Script;->chunks:Ljava/util/List;
invoke-static {v0}, Lorg/bitcoinj/core/Utils;->join(Ljava/lang/Iterable;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method