AbstractIndexMap$EncodedValueTransformer.smali

.class final Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;
.super Ljava/lang/Object;


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x12
    name = "EncodedValueTransformer"
.end annotation


# instance fields
.field private final out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

.field final synthetic this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;


# direct methods
.method constructor <init>(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;Lcom/tencent/tinker/android/dex/util/ByteOutput;)V
    .registers 3

    iput-object p1, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

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

    iput-object p2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    return-void
.end method

.method static synthetic access$000(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
    .registers 2

    invoke-direct {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformArray(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    return-void
.end method

.method static synthetic access$100(Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
    .registers 2

    invoke-direct {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformAnnotation(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    return-void
.end method

.method private transformAnnotation(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
    .registers 7

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readAnnotation()I

    move-result v1

    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->getAnnotationType()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I

    move-result v2

    invoke-static {v0, v2}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I

    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I

    const/4 v0, 0x0

    :goto_19
    if-ge v0, v1, :cond_30

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    iget-object v3, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readAnnotationName()I

    move-result v4

    invoke-virtual {v3, v4}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I

    move-result v3

    invoke-static {v2, v3}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transform(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_19

    :cond_30
    return-void
.end method

.method private transformArray(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
    .registers 4

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readArray()I

    move-result v1

    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    invoke-static {v0, v1}, Lcom/tencent/tinker/android/dex/Leb128;->writeUnsignedLeb128(Lcom/tencent/tinker/android/dex/util/ByteOutput;I)I

    const/4 v0, 0x0

    :goto_a
    if-ge v0, v1, :cond_12

    invoke-virtual {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transform(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    add-int/lit8 v0, v0, 0x1

    goto :goto_a

    :cond_12
    return-void
.end method

.method private writeTypeAndArg(II)V
    .registers 5

    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    shl-int/lit8 v1, p2, 0x5

    or-int/2addr v1, p1

    invoke-interface {v0, v1}, Lcom/tencent/tinker/android/dex/util/ByteOutput;->writeByte(I)V

    return-void
.end method


# virtual methods
.method public transform(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V
    .registers 6

    const/4 v0, 0x0

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->peek()I

    move-result v1

    packed-switch v1, :pswitch_data_116

    :pswitch_8
    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, "Unexpected type: "

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

    move-result-object v1

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->peek()I

    move-result v2

    invoke-static {v2}, Ljava/lang/Integer;->toHexString(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_2a
    iget-object v1, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readByte()B

    move-result v2

    int-to-long v2, v2

    invoke-static {v1, v0, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeSignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    :goto_34
    return-void

    :pswitch_35
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/4 v1, 0x2

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readShort()S

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeSignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_41
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/4 v1, 0x4

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readInt()I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeSignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_4d
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/4 v1, 0x6

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readLong()J

    move-result-wide v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeSignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_58
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/4 v1, 0x3

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readChar()C

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_64
    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readFloat()F

    move-result v0

    invoke-static {v0}, Ljava/lang/Float;->floatToIntBits(F)I

    move-result v0

    int-to-long v0, v0

    const/16 v2, 0x20

    shl-long/2addr v0, v2

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v3, 0x10

    invoke-static {v2, v3, v0, v1}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeRightZeroExtendedValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_78
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x11

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readDouble()D

    move-result-wide v2

    invoke-static {v2, v3}, Ljava/lang/Double;->doubleToLongBits(D)J

    move-result-wide v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeRightZeroExtendedValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_88
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x17

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readString()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustStringIndex(I)I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_9b
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x18

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readType()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustTypeIdIndex(I)I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto :goto_34

    :pswitch_ae
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x19

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readField()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFieldIdIndex(I)I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto/16 :goto_34

    :pswitch_c2
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x1b

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readEnum()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustFieldIdIndex(I)I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto/16 :goto_34

    :pswitch_d6
    iget-object v0, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->out:Lcom/tencent/tinker/android/dex/util/ByteOutput;

    const/16 v1, 0x1a

    iget-object v2, p0, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->this$0:Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;

    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readMethod()I

    move-result v3

    invoke-virtual {v2, v3}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap;->adjustMethodIdIndex(I)I

    move-result v2

    int-to-long v2, v2

    invoke-static {v0, v1, v2, v3}, Lcom/tencent/tinker/android/dex/EncodedValueCodec;->writeUnsignedIntegralValue(Lcom/tencent/tinker/android/dex/util/ByteOutput;IJ)V

    goto/16 :goto_34

    :pswitch_ea
    const/16 v1, 0x1c

    invoke-direct {p0, v1, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->writeTypeAndArg(II)V

    invoke-direct {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformArray(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    goto/16 :goto_34

    :pswitch_f4
    const/16 v1, 0x1d

    invoke-direct {p0, v1, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->writeTypeAndArg(II)V

    invoke-direct {p0, p1}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->transformAnnotation(Lcom/tencent/tinker/android/dex/EncodedValueReader;)V

    goto/16 :goto_34

    :pswitch_fe
    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readNull()V

    const/16 v1, 0x1e

    invoke-direct {p0, v1, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->writeTypeAndArg(II)V

    goto/16 :goto_34

    :pswitch_108
    invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/EncodedValueReader;->readBoolean()Z

    move-result v1

    const/16 v2, 0x1f

    if-eqz v1, :cond_111

    const/4 v0, 0x1

    :cond_111
    invoke-direct {p0, v2, v0}, Lcom/tencent/tinker/commons/dexpatcher/util/AbstractIndexMap$EncodedValueTransformer;->writeTypeAndArg(II)V

    goto/16 :goto_34

    :pswitch_data_116
    .packed-switch 0x0
        :pswitch_2a
        :pswitch_8
        :pswitch_35
        :pswitch_58
        :pswitch_41
        :pswitch_8
        :pswitch_4d
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_64
        :pswitch_78
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_8
        :pswitch_88
        :pswitch_9b
        :pswitch_ae
        :pswitch_d6
        :pswitch_c2
        :pswitch_ea
        :pswitch_f4
        :pswitch_fe
        :pswitch_108
    .end packed-switch
.end method