InstructionComparator.smali
.class public abstract Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;,
Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;,
Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;,
Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
}
.end annotation
# instance fields
.field private final insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
.field private final insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
.field private final insns1:[S
.field private final insns2:[S
.field private final visitedInsnAddrPairs:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set",
"<",
"Ljava/lang/String;",
">;"
}
.end annotation
.end field
# direct methods
.method public constructor <init>([S[S)V
.registers 6
const/4 v2, 0x0
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insns1:[S
iput-object p2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insns2:[S
if-eqz p1, :cond_2c
new-instance v0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;
invoke-direct {v0, p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;-><init>([S)V
array-length v1, p1
invoke-direct {p0, v0, v1}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->readInstructionsIntoHolders(Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;I)[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
move-result-object v0
iput-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
:goto_16
if-eqz p2, :cond_2f
new-instance v0, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;
invoke-direct {v0, p2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;-><init>([S)V
array-length v1, p2
invoke-direct {p0, v0, v1}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->readInstructionsIntoHolders(Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;I)[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
move-result-object v0
iput-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
:goto_24
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
iput-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->visitedInsnAddrPairs:Ljava/util/Set;
return-void
:cond_2c
iput-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
goto :goto_16
:cond_2f
iput-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
goto :goto_24
.end method
.method private compareIndex(III)Z
.registers 5
invoke-static {p1}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getInstructionIndexType(I)I
move-result v0
packed-switch v0, :pswitch_data_22
if-ne p2, p3, :cond_1f
const/4 v0, 0x1
:goto_a
return v0
:pswitch_b
invoke-virtual {p0, p2, p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareString(II)Z
move-result v0
goto :goto_a
:pswitch_10
invoke-virtual {p0, p2, p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareType(II)Z
move-result v0
goto :goto_a
:pswitch_15
invoke-virtual {p0, p2, p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareField(II)Z
move-result v0
goto :goto_a
:pswitch_1a
invoke-virtual {p0, p2, p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareMethod(II)Z
move-result v0
goto :goto_a
:cond_1f
const/4 v0, 0x0
goto :goto_a
nop
:pswitch_data_22
.packed-switch 0x2
:pswitch_10
:pswitch_b
:pswitch_1a
:pswitch_15
.end packed-switch
.end method
.method private readInstructionsIntoHolders(Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;I)[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
.registers 7
invoke-virtual {p1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;->reset()V
new-array v0, p2, [Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
new-instance v1, Lcom/tencent/tinker/android/dx/instruction/InstructionReader;
invoke-direct {v1, p1}, Lcom/tencent/tinker/android/dx/instruction/InstructionReader;-><init>(Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeInput;)V
:try_start_a
new-instance v2, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$1;
const/4 v3, 0x0
invoke-direct {v2, p0, v3, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$1;-><init>(Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;Lcom/tencent/tinker/android/dx/instruction/InstructionVisitor;[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;)V
invoke-virtual {v1, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionReader;->accept(Lcom/tencent/tinker/android/dx/instruction/InstructionVisitor;)V
:try_end_13
.catch Ljava/io/EOFException; {:try_start_a .. :try_end_13} :catch_14
return-object v0
:catch_14
move-exception v0
new-instance v1, Ljava/lang/RuntimeException;
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v1
.end method
# virtual methods
.method public final compare()Z
.registers 15
const/4 v6, 0x0
const/16 v12, 0x1b
const/16 v11, 0x1a
const/4 v8, 0x1
const/4 v1, 0x0
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->visitedInsnAddrPairs:Ljava/util/Set;
invoke-interface {v0}, Ljava/util/Set;->clear()V
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
if-nez v0, :cond_16
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
if-nez v0, :cond_16
move v1, v8
:cond_15
:goto_15
return v1
:cond_16
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
if-eqz v0, :cond_15
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
if-eqz v0, :cond_15
move v0, v1
move v2, v1
move v3, v1
move v4, v1
:cond_22
iget-object v5, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v5, v5
if-ge v4, v5, :cond_90
iget-object v5, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v5, v5
if-ge v3, v5, :cond_90
move-object v5, v6
:goto_2d
iget-object v7, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v7, v7
if-ge v4, v7, :cond_3e
if-nez v5, :cond_3e
iget-object v7, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
add-int/lit8 v5, v4, 0x1
aget-object v4, v7, v4
move-object v13, v4
move v4, v5
move-object v5, v13
goto :goto_2d
:cond_3e
if-eqz v5, :cond_90
add-int/lit8 v2, v2, 0x1
move-object v7, v6
:goto_43
iget-object v9, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v9, v9
if-ge v3, v9, :cond_54
if-nez v7, :cond_54
iget-object v9, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
add-int/lit8 v7, v3, 0x1
aget-object v3, v9, v3
move-object v13, v3
move v3, v7
move-object v7, v13
goto :goto_43
:cond_54
if-eqz v7, :cond_90
add-int/lit8 v0, v0, 0x1
iget v9, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
iget v10, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-eq v9, v10, :cond_84
iget v9, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-ne v9, v11, :cond_71
iget v9, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-ne v9, v12, :cond_71
iget v5, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
iget v7, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
invoke-virtual {p0, v5, v7}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareString(II)Z
move-result v5
if-nez v5, :cond_22
goto :goto_15
:cond_71
iget v9, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-ne v9, v12, :cond_15
iget v9, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-ne v9, v11, :cond_15
iget v5, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
iget v7, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
invoke-virtual {p0, v5, v7}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareString(II)Z
move-result v5
if-nez v5, :cond_22
goto :goto_15
:cond_84
iget v5, v5, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->address:I
iget v7, v7, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->address:I
invoke-virtual {p0, v5, v7}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->isSameInstruction(II)Z
move-result v5
if-nez v5, :cond_22
goto :goto_15
:cond_8f
move v4, v5
:cond_90
iget-object v5, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v5, v5
if-ge v4, v5, :cond_a0
iget-object v6, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
add-int/lit8 v5, v4, 0x1
aget-object v4, v6, v4
if-eqz v4, :cond_8f
goto/16 :goto_15
:cond_9f
move v3, v4
:cond_a0
iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
array-length v4, v4
if-ge v3, v4, :cond_af
iget-object v5, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
add-int/lit8 v4, v3, 0x1
aget-object v3, v5, v3
if-eqz v3, :cond_9f
goto/16 :goto_15
:cond_af
if-ne v2, v0, :cond_15
move v1, v8
goto/16 :goto_15
.end method
.method protected abstract compareField(II)Z
.end method
.method protected abstract compareMethod(II)Z
.end method
.method protected abstract compareString(II)Z
.end method
.method protected abstract compareType(II)Z
.end method
.method public isSameInstruction(II)Z
.registers 11
const/4 v2, 0x1
const/4 v3, 0x0
iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders1:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
aget-object v0, v0, p1
iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->insnHolders2:[Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;
aget-object v1, v1, p2
if-nez v0, :cond_10
if-nez v1, :cond_10
move v3, v2
:cond_f
:goto_f
return v3
:cond_10
if-eqz v0, :cond_f
if-eqz v1, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->opcode:I
iget v5, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->insnFormat:I
packed-switch v5, :pswitch_data_170
:pswitch_21
iget-wide v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->literal:J
iget-wide v6, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->literal:J
cmp-long v4, v4, v6
if-nez v4, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->registerCount:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->registerCount:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->a:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->a:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->b:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->b:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->c:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->c:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->d:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->d:I
if-ne v4, v5, :cond_f
iget v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->e:I
iget v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->e:I
if-ne v0, v1, :cond_f
move v3, v2
goto :goto_f
:pswitch_4f
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v3
const-string/jumbo v4, "-"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
invoke-virtual {v3, p2}, 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
iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->visitedInsnAddrPairs:Ljava/util/Set;
invoke-interface {v4, v3}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_78
iget v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->target:I
iget v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->target:I
invoke-virtual {p0, v0, v1}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->isSameInstruction(II)Z
move-result v3
goto :goto_f
:cond_78
move v3, v2
goto :goto_f
:pswitch_7a
iget v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
iget v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$InstructionHolder;->index:I
invoke-direct {p0, v4, v0, v1}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->compareIndex(III)Z
move-result v3
goto :goto_f
:pswitch_83
check-cast v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;
check-cast v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->firstKey:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->firstKey:I
if-ne v4, v5, :cond_f
iget-object v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->targets:[I
array-length v4, v4
iget-object v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->targets:[I
array-length v5, v5
if-ne v4, v5, :cond_f
iget-object v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->targets:[I
array-length v5, v4
move v4, v3
:goto_99
if-ge v4, v5, :cond_ac
iget-object v6, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->targets:[I
aget v6, v6, v4
iget-object v7, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$PackedSwitchPayloadInsntructionHolder;->targets:[I
aget v7, v7, v4
invoke-virtual {p0, v6, v7}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->isSameInstruction(II)Z
move-result v6
if-eqz v6, :cond_f
add-int/lit8 v4, v4, 0x1
goto :goto_99
:cond_ac
move v3, v2
goto/16 :goto_f
:pswitch_af
check-cast v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;
check-cast v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;
iget-object v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->keys:[I
iget-object v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->keys:[I
invoke-static {v4, v5}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uArrCompare([I[I)I
move-result v4
if-nez v4, :cond_f
iget-object v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->targets:[I
array-length v4, v4
iget-object v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->targets:[I
array-length v5, v5
if-ne v4, v5, :cond_f
iget-object v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->targets:[I
array-length v5, v4
move v4, v3
:goto_c9
if-ge v4, v5, :cond_dc
iget-object v6, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->targets:[I
aget v6, v6, v4
iget-object v7, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$SparseSwitchPayloadInsntructionHolder;->targets:[I
aget v7, v7, v4
invoke-virtual {p0, v6, v7}, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator;->isSameInstruction(II)Z
move-result v6
if-eqz v6, :cond_f
add-int/lit8 v4, v4, 0x1
goto :goto_c9
:cond_dc
move v3, v2
goto/16 :goto_f
:pswitch_df
check-cast v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;
check-cast v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->elementWidth:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->elementWidth:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->size:I
iget v5, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->size:I
if-ne v4, v5, :cond_f
iget v4, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->elementWidth:I
packed-switch v4, :pswitch_data_1aa
:pswitch_f4
new-instance v0, Lcom/tencent/tinker/android/dex/DexException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v2, "bogus element_width: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-static {v4}, Lcom/tencent/tinker/android/dx/util/Hex;->u2(I)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}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v0
:pswitch_112
iget-object v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v0, [B
check-cast v0, [B
iget-object v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v1, [B
check-cast v1, [B
invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uArrCompare([B[B)I
move-result v0
if-nez v0, :cond_128
move v0, v2
:goto_125
move v3, v0
goto/16 :goto_f
:cond_128
move v0, v3
goto :goto_125
:pswitch_12a
iget-object v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v0, [S
check-cast v0, [S
iget-object v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v1, [S
check-cast v1, [S
invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uArrCompare([S[S)I
move-result v0
if-nez v0, :cond_13f
:goto_13c
move v3, v2
goto/16 :goto_f
:cond_13f
move v2, v3
goto :goto_13c
:pswitch_141
iget-object v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v0, [I
check-cast v0, [I
iget-object v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v1, [I
check-cast v1, [I
invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uArrCompare([I[I)I
move-result v0
if-nez v0, :cond_156
:goto_153
move v3, v2
goto/16 :goto_f
:cond_156
move v2, v3
goto :goto_153
:pswitch_158
iget-object v0, v0, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v0, [J
check-cast v0, [J
iget-object v1, v1, Lcom/tencent/tinker/android/dx/instruction/InstructionComparator$FillArrayDataPayloadInstructionHolder;->data:Ljava/lang/Object;
check-cast v1, [J
check-cast v1, [J
invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->sArrCompare([J[J)I
move-result v0
if-nez v0, :cond_16d
:goto_16a
move v3, v2
goto/16 :goto_f
:cond_16d
move v2, v3
goto :goto_16a
nop
:pswitch_data_170
.packed-switch 0x2
:pswitch_4f
:pswitch_21
:pswitch_21
:pswitch_21
:pswitch_21
:pswitch_4f
:pswitch_7a
:pswitch_21
:pswitch_21
:pswitch_4f
:pswitch_21
:pswitch_7a
:pswitch_21
:pswitch_4f
:pswitch_21
:pswitch_21
:pswitch_4f
:pswitch_7a
:pswitch_21
:pswitch_4f
:pswitch_21
:pswitch_7a
:pswitch_7a
:pswitch_21
:pswitch_df
:pswitch_83
:pswitch_af
.end packed-switch
:pswitch_data_1aa
.packed-switch 0x1
:pswitch_112
:pswitch_12a
:pswitch_f4
:pswitch_141
:pswitch_f4
:pswitch_f4
:pswitch_f4
:pswitch_158
.end packed-switch
.end method