InstructionWriter.smali

.class public final Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;
.super Lcom/tencent/tinker/android/dx/instruction/InstructionVisitor;


# instance fields
.field private final codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

.field private final hasPromoter:Z

.field private final insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;


# direct methods
.method public constructor <init>(Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;)V
    .registers 4

    const/4 v0, 0x0

    invoke-direct {p0, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionVisitor;-><init>(Lcom/tencent/tinker/android/dx/instruction/InstructionVisitor;)V

    iput-object p1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    iput-object p2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    if-eqz p2, :cond_e

    const/4 v0, 0x1

    :goto_b
    iput-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    return-void

    :cond_e
    const/4 v0, 0x0

    goto :goto_b
.end method


# virtual methods
.method public visitFillArrayDataPayloadInsn(IILjava/lang/Object;II)V
    .registers 9

    int-to-short v0, p2

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    int-to-short v0, p5

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0, p4}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    packed-switch p5, :pswitch_data_5a

    :pswitch_14
    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 {p5}, 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_32
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    check-cast p3, [B

    check-cast p3, [B

    invoke-virtual {v0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write([B)V

    :goto_3b
    return-void

    :pswitch_3c
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    check-cast p3, [S

    check-cast p3, [S

    invoke-virtual {v0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write([S)V

    goto :goto_3b

    :pswitch_46
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    check-cast p3, [I

    check-cast p3, [I

    invoke-virtual {v0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write([I)V

    goto :goto_3b

    :pswitch_50
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    check-cast p3, [J

    check-cast p3, [J

    invoke-virtual {v0, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write([J)V

    goto :goto_3b

    :pswitch_data_5a
    .packed-switch 0x1
        :pswitch_32
        :pswitch_3c
        :pswitch_14
        :pswitch_46
        :pswitch_14
        :pswitch_14
        :pswitch_14
        :pswitch_50
    .end packed-switch
.end method

.method public visitFiveRegisterInsn(IIIIIJIIIII)V
    .registers 18

    sparse-switch p2, :sswitch_data_38

    new-instance v1, Ljava/lang/IllegalStateException;

    new-instance v2, Ljava/lang/StringBuilder;

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

    const-string/jumbo v3, "unexpected opcode: "

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

    move-result-object v2

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(I)Ljava/lang/String;

    move-result-object v3

    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-direct {v1, v2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v1

    :sswitch_21
    int-to-short v1, p3

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/4 v3, 0x5

    move/from16 v0, p12

    invoke-static {v0, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v3

    invoke-static {p2, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v3

    invoke-static/range {p8 .. p11}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v4

    invoke-virtual {v2, v3, v1, v4}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    return-void

    nop

    :sswitch_data_38
    .sparse-switch
        0x24 -> :sswitch_21
        0x6e -> :sswitch_21
        0x6f -> :sswitch_21
        0x70 -> :sswitch_21
        0x71 -> :sswitch_21
        0x72 -> :sswitch_21
    .end sparse-switch
.end method

.method public visitFourRegisterInsn(IIIIIJIIII)V
    .registers 16

    sparse-switch p2, :sswitch_data_36

    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :sswitch_21
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/4 v2, 0x0

    const/4 v3, 0x4

    invoke-static {v2, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {p8, p9, p10, p11}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    return-void

    :sswitch_data_36
    .sparse-switch
        0x24 -> :sswitch_21
        0x6e -> :sswitch_21
        0x6f -> :sswitch_21
        0x70 -> :sswitch_21
        0x71 -> :sswitch_21
        0x72 -> :sswitch_21
    .end sparse-switch
.end method

.method public visitOneRegisterInsn(IIIIIJI)V
    .registers 15

    const v1, 0xffff

    const/4 v3, 0x0

    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_e

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    invoke-virtual {v0, p5}, Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;->getPromotedAddress(I)I

    move-result p5

    :cond_e
    packed-switch p2, :pswitch_data_170

    :pswitch_11
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :pswitch_2f
    int-to-short v0, p2

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getLiteralNibble(J)I

    move-result v2

    invoke-static {p8, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {v0, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v0

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    :goto_41
    return-void

    :pswitch_42
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-virtual {v0, v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    goto :goto_41

    :pswitch_4c
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTargetUnit(II)S

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_41

    :pswitch_60
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getLiteralUnit(J)S

    move-result v2

    invoke-virtual {v0, v1, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_41

    :pswitch_6e
    const/16 v0, 0x15

    if-ne p2, v0, :cond_82

    const/16 v0, 0x10

    :goto_74
    shr-long v0, p6, v0

    long-to-int v0, v0

    int-to-short v0, v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_41

    :cond_82
    const/16 v0, 0x30

    goto :goto_74

    :pswitch_85
    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_aa

    if-le p3, v1, :cond_9f

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/16 v1, 0x1b

    invoke-static {v1, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v2

    invoke-static {p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v3

    invoke-virtual {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_41

    :cond_9f
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_41

    :cond_aa
    if-le p3, v1, :cond_d1

    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, "string index out of bound: "

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

    move-result-object v1

    invoke-static {p3}, Lcom/tencent/tinker/android/dx/util/Hex;->u4(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

    const-string/jumbo v2, ", perhaps you need to enable force jumbo mode."

    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

    :cond_d1
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto/16 :goto_41

    :pswitch_dd
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto/16 :goto_41

    :pswitch_e9
    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getLiteralInt(J)I

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v3

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v0

    invoke-virtual {v1, v2, v3, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_41

    :pswitch_100
    packed-switch p2, :pswitch_data_246

    :goto_103
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTarget(II)I

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v3

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v0

    invoke-virtual {v1, v2, v3, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_41

    :pswitch_120
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v1

    invoke-virtual {v0, p5, v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->setBaseAddress(II)V

    goto :goto_103

    :pswitch_12c
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v2

    invoke-static {p3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v3

    invoke-virtual {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_41

    :pswitch_13f
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(J)S

    move-result v2

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(J)S

    move-result v3

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit2(J)S

    move-result v4

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit3(J)S

    move-result v5

    invoke-virtual/range {v0 .. v5}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSSSS)V

    goto/16 :goto_41

    :pswitch_15a
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/4 v2, 0x1

    invoke-static {v3, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {p8, v3, v3, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_41

    nop

    :pswitch_data_170
    .packed-switch 0xa
        :pswitch_42
        :pswitch_42
        :pswitch_42
        :pswitch_42
        :pswitch_11
        :pswitch_42
        :pswitch_42
        :pswitch_42
        :pswitch_2f
        :pswitch_60
        :pswitch_e9
        :pswitch_6e
        :pswitch_60
        :pswitch_e9
        :pswitch_13f
        :pswitch_6e
        :pswitch_85
        :pswitch_12c
        :pswitch_dd
        :pswitch_42
        :pswitch_42
        :pswitch_dd
        :pswitch_11
        :pswitch_11
        :pswitch_dd
        :pswitch_11
        :pswitch_15a
        :pswitch_11
        :pswitch_100
        :pswitch_42
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_100
        :pswitch_100
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_4c
        :pswitch_4c
        :pswitch_4c
        :pswitch_4c
        :pswitch_4c
        :pswitch_4c
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_11
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_dd
        :pswitch_15a
        :pswitch_15a
        :pswitch_15a
        :pswitch_15a
        :pswitch_15a
    .end packed-switch

    :pswitch_data_246
    .packed-switch 0x2b
        :pswitch_120
        :pswitch_120
    .end packed-switch
.end method

.method public visitPackedSwitchPayloadInsn(III[I)V
    .registers 10

    const/4 v0, 0x0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->baseAddressForCursor()I

    move-result v1

    int-to-short v2, p2

    iget-object v3, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v3, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    array-length v3, p4

    invoke-static {v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->asUnsignedUnit(I)S

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v2, p3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    iget-boolean v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v2, :cond_34

    array-length v2, p4

    :goto_21
    if-ge v0, v2, :cond_42

    aget v3, p4, v0

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;->getPromotedAddress(I)I

    move-result v3

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    sub-int/2addr v3, v1

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_21

    :cond_34
    array-length v2, p4

    :goto_35
    if-ge v0, v2, :cond_42

    aget v3, p4, v0

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    sub-int/2addr v3, v1

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_35

    :cond_42
    return-void
.end method

.method public visitRegisterRangeInsn(IIIIIJII)V
    .registers 14

    sparse-switch p2, :sswitch_data_30

    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :sswitch_21
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getAUnit(I)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    return-void

    :sswitch_data_30
    .sparse-switch
        0x25 -> :sswitch_21
        0x74 -> :sswitch_21
        0x75 -> :sswitch_21
        0x76 -> :sswitch_21
        0x77 -> :sswitch_21
        0x78 -> :sswitch_21
    .end sparse-switch
.end method

.method public visitSparseSwitchPayloadInsn(II[I[I)V
    .registers 11

    const/4 v0, 0x0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->baseAddressForCursor()I

    move-result v2

    int-to-short v1, p2

    iget-object v3, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v3, v1}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    array-length v3, p4

    invoke-static {v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->asUnsignedUnit(I)S

    move-result v3

    invoke-virtual {v1, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    array-length v3, p3

    move v1, v0

    :goto_19
    if-ge v1, v3, :cond_25

    aget v4, p3, v1

    iget-object v5, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v5, v4}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v1, v1, 0x1

    goto :goto_19

    :cond_25
    iget-boolean v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v1, :cond_3d

    array-length v1, p4

    :goto_2a
    if-ge v0, v1, :cond_4b

    aget v3, p4, v0

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;->getPromotedAddress(I)I

    move-result v3

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    sub-int/2addr v3, v2

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_2a

    :cond_3d
    array-length v1, p4

    :goto_3e
    if-ge v0, v1, :cond_4b

    aget v3, p4, v0

    iget-object v4, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    sub-int/2addr v3, v2

    invoke-virtual {v4, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->writeInt(I)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_3e

    :cond_4b
    return-void
.end method

.method public visitThreeRegisterInsn(IIIIIJIII)V
    .registers 15

    const/4 v3, 0x0

    packed-switch p2, :pswitch_data_44

    :pswitch_4
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :pswitch_22
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p9, p10}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v0, v1, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    :goto_2f
    return-void

    :pswitch_30
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/4 v2, 0x3

    invoke-static {v3, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {p8, p9, p10, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_2f

    :pswitch_data_44
    .packed-switch 0x24
        :pswitch_30
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_30
        :pswitch_30
        :pswitch_30
        :pswitch_30
        :pswitch_30
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_4
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
        :pswitch_22
    .end packed-switch
.end method

.method public visitTwoRegisterInsn(IIIIIJII)V
    .registers 14

    const/4 v3, 0x0

    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_b

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    invoke-virtual {v0, p5}, Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;->getPromotedAddress(I)I

    move-result p5

    :cond_b
    packed-switch p2, :pswitch_data_b8

    :pswitch_e
    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :pswitch_2c
    int-to-short v0, p2

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p8, p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {v0, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v0

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    :goto_3a
    return-void

    :pswitch_3b
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getBUnit(I)S

    move-result v2

    invoke-virtual {v0, v1, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_3a

    :pswitch_49
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getLiteralByte(J)I

    move-result v2

    invoke-static {p9, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v0, v1, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_3a

    :pswitch_5b
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTargetUnit(II)S

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p8, p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_3a

    :pswitch_73
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p8, p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v1

    invoke-static {p2, v1}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v1

    invoke-static {p6, p7}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getLiteralUnit(J)S

    move-result v2

    invoke-virtual {v0, v1, v2}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_3a

    :pswitch_85
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p8, p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-virtual {v1, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_3a

    :pswitch_94
    int-to-short v0, p2

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p8}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getAUnit(I)S

    move-result v2

    invoke-static {p9}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getBUnit(I)S

    move-result v3

    invoke-virtual {v1, v0, v2, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_3a

    :pswitch_a3
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    const/4 v2, 0x2

    invoke-static {v3, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {p8, p9, v3, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_3a

    nop

    :pswitch_data_b8
    .packed-switch 0x1
        :pswitch_2c
        :pswitch_3b
        :pswitch_94
        :pswitch_2c
        :pswitch_3b
        :pswitch_94
        :pswitch_2c
        :pswitch_3b
        :pswitch_94
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_85
        :pswitch_2c
        :pswitch_e
        :pswitch_85
        :pswitch_a3
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_5b
        :pswitch_5b
        :pswitch_5b
        :pswitch_5b
        :pswitch_5b
        :pswitch_5b
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_85
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_a3
        :pswitch_a3
        :pswitch_a3
        :pswitch_a3
        :pswitch_a3
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_e
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_2c
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_73
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
        :pswitch_49
    .end packed-switch
.end method

.method public visitZeroRegisterInsn(IIIIIJ)V
    .registers 13

    const/16 v4, 0x2a

    const/4 v3, 0x0

    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_d

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->insnPromoter:Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;

    invoke-virtual {v0, p5}, Lcom/tencent/tinker/android/dx/instruction/InstructionPromoter;->getPromotedAddress(I)I

    move-result p5

    :cond_d
    sparse-switch p2, :sswitch_data_e8

    new-instance v0, Ljava/lang/IllegalStateException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string/jumbo v2, "unexpected opcode: "

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

    move-result-object v1

    invoke-static {p2}, Lcom/tencent/tinker/android/dx/util/Hex;->u2or4(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}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V

    throw v0

    :sswitch_2e
    int-to-short v0, p2

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    :goto_34
    return-void

    :sswitch_35
    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_6c

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTarget(II)I

    move-result v0

    int-to-byte v1, v0

    if-eq v0, v1, :cond_60

    int-to-short v1, v0

    if-eq v0, v1, :cond_57

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v2

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v0

    invoke-virtual {v1, v4, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_34

    :cond_57
    int-to-short v0, v0

    const/16 v1, 0x29

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v2, v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_34

    :cond_60
    and-int/lit16 v0, v0, 0xff

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v0

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    goto :goto_34

    :cond_6c
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTargetByte(II)I

    move-result v0

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {p2, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v0

    invoke-virtual {v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(S)V

    goto :goto_34

    :sswitch_80
    iget-boolean v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->hasPromoter:Z

    if-eqz v0, :cond_a7

    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTarget(II)I

    move-result v0

    int-to-short v1, v0

    if-eq v0, v1, :cond_9f

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v2

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v0

    invoke-virtual {v1, v4, v2, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto :goto_34

    :cond_9f
    int-to-short v0, v0

    int-to-short v1, p2

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v2, v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto :goto_34

    :cond_a7
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTargetUnit(II)S

    move-result v0

    int-to-short v1, p2

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v2, v1, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SS)V

    goto/16 :goto_34

    :sswitch_b9
    iget-object v0, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-virtual {v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->cursor()I

    move-result v0

    invoke-static {p5, v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->getTarget(II)I

    move-result v0

    int-to-short v1, p2

    iget-object v2, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit0(I)S

    move-result v3

    invoke-static {v0}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->unit1(I)S

    move-result v0

    invoke-virtual {v2, v1, v3, v0}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_34

    :sswitch_d3
    int-to-short v0, p3

    iget-object v1, p0, Lcom/tencent/tinker/android/dx/instruction/InstructionWriter;->codeOut:Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;

    invoke-static {v3, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->makeByte(II)I

    move-result v2

    invoke-static {p2, v2}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(II)S

    move-result v2

    invoke-static {v3, v3, v3, v3}, Lcom/tencent/tinker/android/dx/instruction/InstructionCodec;->codeUnit(IIII)S

    move-result v3

    invoke-virtual {v1, v2, v0, v3}, Lcom/tencent/tinker/android/dx/instruction/ShortArrayCodeOutput;->write(SSS)V

    goto/16 :goto_34

    nop

    :sswitch_data_e8
    .sparse-switch
        -0x1 -> :sswitch_2e
        0x0 -> :sswitch_2e
        0xe -> :sswitch_2e
        0x24 -> :sswitch_d3
        0x28 -> :sswitch_35
        0x29 -> :sswitch_80
        0x2a -> :sswitch_b9
        0x6e -> :sswitch_d3
        0x6f -> :sswitch_d3
        0x70 -> :sswitch_d3
        0x71 -> :sswitch_d3
        0x72 -> :sswitch_d3
    .end sparse-switch
.end method