TableOfContents.smali
.class public final Lcom/tencent/tinker/android/dex/TableOfContents;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/tencent/tinker/android/dex/TableOfContents$Section;
}
.end annotation
# static fields
.field public static final SECTION_TYPE_ANNOTATIONS:S = 0x2004s
.field public static final SECTION_TYPE_ANNOTATIONSDIRECTORIES:S = 0x2006s
.field public static final SECTION_TYPE_ANNOTATIONSETREFLISTS:S = 0x1002s
.field public static final SECTION_TYPE_ANNOTATIONSETS:S = 0x1003s
.field public static final SECTION_TYPE_CLASSDATA:S = 0x2000s
.field public static final SECTION_TYPE_CLASSDEFS:S = 0x6s
.field public static final SECTION_TYPE_CODES:S = 0x2001s
.field public static final SECTION_TYPE_DEBUGINFOS:S = 0x2003s
.field public static final SECTION_TYPE_ENCODEDARRAYS:S = 0x2005s
.field public static final SECTION_TYPE_FIELDIDS:S = 0x4s
.field public static final SECTION_TYPE_HEADER:S = 0x0s
.field public static final SECTION_TYPE_MAPLIST:S = 0x1000s
.field public static final SECTION_TYPE_METHODIDS:S = 0x5s
.field public static final SECTION_TYPE_PROTOIDS:S = 0x3s
.field public static final SECTION_TYPE_STRINGDATAS:S = 0x2002s
.field public static final SECTION_TYPE_STRINGIDS:S = 0x1s
.field public static final SECTION_TYPE_TYPEIDS:S = 0x2s
.field public static final SECTION_TYPE_TYPELISTS:S = 0x1001s
# instance fields
.field public final annotationSetRefLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final annotationSets:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final annotations:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final annotationsDirectories:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public checksum:I
.field public final classDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final codes:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public dataOff:I
.field public dataSize:I
.field public final debugInfos:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final encodedArrays:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public fileSize:I
.field public final header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public linkOff:I
.field public linkSize:I
.field public final mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public signature:[B
.field public final stringDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.field public final typeLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
# direct methods
.method public constructor <init>()V
.registers 8
const/4 v6, 0x4
const/4 v5, 0x3
const/4 v4, 0x2
const/4 v3, 0x0
const/4 v2, 0x1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-direct {v0, v3, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-direct {v0, v2, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-direct {v0, v4, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-direct {v0, v5, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-direct {v0, v6, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/4 v1, 0x5
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/4 v1, 0x6
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x1000
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x1001
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x1002
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSetRefLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x1003
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSets:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2000
invoke-direct {v0, v1, v3}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2001
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->codes:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2002
invoke-direct {v0, v1, v3}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2003
invoke-direct {v0, v1, v3}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->debugInfos:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2004
invoke-direct {v0, v1, v3}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotations:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2005
invoke-direct {v0, v1, v3}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->encodedArrays:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
new-instance v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v1, 0x2006
invoke-direct {v0, v1, v2}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;-><init>(IZ)V
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationsDirectories:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v0, 0x12
new-array v0, v0, [Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v1, v0, v3
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v1, v0, v2
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v1, v0, v4
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v1, v0, v5
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v1, v0, v6
const/4 v1, 0x5
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/4 v1, 0x6
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/4 v1, 0x7
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0x8
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0x9
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSetRefLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xa
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSets:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xb
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xc
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->codes:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xd
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xe
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->debugInfos:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0xf
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotations:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0x10
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->encodedArrays:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
const/16 v1, 0x11
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationsDirectories:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aput-object v2, v0, v1
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
const/16 v0, 0x14
new-array v0, v0, [B
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->signature:[B
return-void
.end method
.method private getSection(S)Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.registers 7
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
array-length v2, v1
const/4 v0, 0x0
:goto_4
if-ge v0, v2, :cond_10
aget-object v3, v1, v0
iget-short v4, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->type:S
if-ne v4, p1, :cond_d
return-object v3
:cond_d
add-int/lit8 v0, v0, 0x1
goto :goto_4
:cond_10
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v2, "No such map item: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method private readHeader(Lcom/tencent/tinker/android/dex/Dex$Section;)V
.registers 6
const/16 v0, 0x8
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->readByteArray(I)[B
move-result-object v0
invoke-static {v0}, Lcom/tencent/tinker/android/dex/DexFormat;->magicToApi([B)I
move-result v1
const/16 v2, 0xd
if-eq v1, v2, :cond_2c
new-instance v1, Lcom/tencent/tinker/android/dex/DexException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v3, "Unexpected magic: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v0}, Ljava/util/Arrays;->toString([B)Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v1
:cond_2c
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->checksum:I
const/16 v0, 0x14
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->readByteArray(I)[B
move-result-object v0
iput-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->signature:[B
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fileSize:I
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
const/16 v1, 0x70
if-eq v0, v1, :cond_66
new-instance v1, Lcom/tencent/tinker/android/dex/DexException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v3, "Unexpected header: 0x"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v1
:cond_66
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
const v1, 0x12345678
if-eq v0, v1, :cond_8d
new-instance v1, Lcom/tencent/tinker/android/dex/DexException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v3, "Unexpected endian tag: 0x"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
invoke-static {v0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v0
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v1
:cond_8d
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->linkSize:I
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->linkOff:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-nez v0, :cond_b0
new-instance v0, Lcom/tencent/tinker/android/dex/DexException;
const-string/jumbo v1, "Cannot merge dex files that do not contain a map"
invoke-direct {v0, v1}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v0
:cond_b0
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v1
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataSize:I
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v0
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataOff:I
return-void
.end method
.method private readMap(Lcom/tencent/tinker/android/dex/Dex$Section;)V
.registers 12
const/4 v1, 0x0
const/4 v9, -0x1
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v4
const/4 v0, 0x0
move-object v2, v0
move v0, v1
:goto_9
if-ge v0, v4, :cond_81
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readShort()S
move-result v5
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readShort()S
invoke-direct {p0, v5}, Lcom/tencent/tinker/android/dex/TableOfContents;->getSection(S)Lcom/tencent/tinker/android/dex/TableOfContents$Section;
move-result-object v3
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v6
invoke-virtual {p1}, Lcom/tencent/tinker/android/dex/Dex$Section;->readInt()I
move-result v7
iget v8, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
if-eqz v8, :cond_26
iget v8, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
if-ne v8, v6, :cond_2e
:cond_26
iget v8, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-eq v8, v9, :cond_4c
iget v8, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-eq v8, v7, :cond_4c
:cond_2e
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 map value for 0x"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-static {v5}, 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
:cond_4c
iput v6, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
iput v7, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-eqz v2, :cond_7d
iget v5, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget v6, v3, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-le v5, v6, :cond_7d
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 v4, "Map is unsorted at "
invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
const-string/jumbo v2, ", "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v0
:cond_7d
add-int/lit8 v0, v0, 0x1
move-object v2, v3
goto :goto_9
:cond_81
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iput v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-static {v0}, Ljava/util/Arrays;->sort([Ljava/lang/Object;)V
const/4 v0, 0x1
:goto_8b
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
array-length v1, v1
if-ge v0, v1, :cond_a9
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aget-object v1, v1, v0
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-ne v1, v9, :cond_a6
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aget-object v1, v1, v0
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
add-int/lit8 v3, v0, -0x1
aget-object v2, v2, v3
iget v2, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
iput v2, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:cond_a6
add-int/lit8 v0, v0, 0x1
goto :goto_8b
:cond_a9
return-void
.end method
# virtual methods
.method public computeSizesFromOffsets()V
.registers 7
iget v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fileSize:I
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
array-length v0, v0
add-int/lit8 v0, v0, -0x1
move v5, v0
move v0, v1
move v1, v5
:goto_a
if-ltz v1, :cond_3e
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
aget-object v2, v2, v1
iget v3, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
const/4 v4, -0x1
if-ne v3, v4, :cond_18
:goto_15
add-int/lit8 v1, v1, -0x1
goto :goto_a
:cond_18
iget v3, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
if-le v3, v0, :cond_36
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 v3, "Map is unsorted at "
invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/tencent/tinker/android/dex/DexException;-><init>(Ljava/lang/String;)V
throw v0
:cond_36
iget v3, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
sub-int/2addr v0, v3
iput v0, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
iget v0, v2, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
goto :goto_15
:cond_3e
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iget-object v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v1, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->byteCount:I
add-int/2addr v0, v1
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataOff:I
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fileSize:I
iget v1, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataOff:I
sub-int/2addr v0, v1
iput v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataSize:I
return-void
.end method
.method public getSectionByType(I)Lcom/tencent/tinker/android/dex/TableOfContents$Section;
.registers 5
sparse-switch p1, :sswitch_data_54
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v2, "unknown section type: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
:sswitch_1d
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
:goto_1f
return-object v0
:sswitch_20
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_23
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_26
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_29
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_2c
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_2f
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_32
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_35
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_38
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSetRefLists:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_3b
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationSets:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_3e
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_41
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->codes:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_44
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringDatas:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_47
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->debugInfos:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_4a
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotations:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_4d
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->encodedArrays:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
:sswitch_50
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->annotationsDirectories:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
goto :goto_1f
nop
:sswitch_data_54
.sparse-switch
0x0 -> :sswitch_1d
0x1 -> :sswitch_20
0x2 -> :sswitch_23
0x3 -> :sswitch_26
0x4 -> :sswitch_29
0x5 -> :sswitch_2c
0x6 -> :sswitch_2f
0x1000 -> :sswitch_32
0x1001 -> :sswitch_35
0x1002 -> :sswitch_38
0x1003 -> :sswitch_3b
0x2000 -> :sswitch_3e
0x2001 -> :sswitch_41
0x2002 -> :sswitch_44
0x2003 -> :sswitch_47
0x2004 -> :sswitch_4a
0x2005 -> :sswitch_4d
0x2006 -> :sswitch_50
.end sparse-switch
.end method
.method public readFrom(Lcom/tencent/tinker/android/dex/Dex;)V
.registers 3
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->header:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex;->openSection(Lcom/tencent/tinker/android/dex/TableOfContents$Section;)Lcom/tencent/tinker/android/dex/Dex$Section;
move-result-object v0
invoke-direct {p0, v0}, Lcom/tencent/tinker/android/dex/TableOfContents;->readHeader(Lcom/tencent/tinker/android/dex/Dex$Section;)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex;->openSection(I)Lcom/tencent/tinker/android/dex/Dex$Section;
move-result-object v0
invoke-direct {p0, v0}, Lcom/tencent/tinker/android/dex/TableOfContents;->readMap(Lcom/tencent/tinker/android/dex/Dex$Section;)V
invoke-virtual {p0}, Lcom/tencent/tinker/android/dex/TableOfContents;->computeSizesFromOffsets()V
return-void
.end method
.method public writeHeader(Lcom/tencent/tinker/android/dex/Dex$Section;)V
.registers 5
const/4 v1, 0x0
const/16 v0, 0xd
invoke-static {v0}, Lcom/tencent/tinker/android/dex/DexFormat;->apiToMagic(I)Ljava/lang/String;
move-result-object v0
const-string/jumbo v2, "UTF-8"
invoke-virtual {v0, v2}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v0
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->write([B)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->checksum:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->signature:[B
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->write([B)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fileSize:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
const/16 v0, 0x70
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
const v0, 0x12345678
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->linkSize:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->linkOff:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->mapList:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_cb
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->stringIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:goto_4f
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_cd
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->typeIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:goto_65
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_cf
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->protoIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:goto_7b
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_d1
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->fieldIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:goto_91
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_d3
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->methodIds:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:goto_a7
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v0, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
invoke-virtual {v0}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v0
if-eqz v0, :cond_bd
iget-object v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->classDefs:Lcom/tencent/tinker/android/dex/TableOfContents$Section;
iget v1, v0, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
:cond_bd
invoke-virtual {p1, v1}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataSize:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget v0, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->dataOff:I
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
return-void
:cond_cb
move v0, v1
goto :goto_4f
:cond_cd
move v0, v1
goto :goto_65
:cond_cf
move v0, v1
goto :goto_7b
:cond_d1
move v0, v1
goto :goto_91
:cond_d3
move v0, v1
goto :goto_a7
.end method
.method public writeMap(Lcom/tencent/tinker/android/dex/Dex$Section;)V
.registers 8
const/4 v1, 0x0
iget-object v3, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
array-length v4, v3
move v2, v1
move v0, v1
:goto_6
if-ge v2, v4, :cond_15
aget-object v5, v3, v2
invoke-virtual {v5}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v5
if-eqz v5, :cond_12
add-int/lit8 v0, v0, 0x1
:cond_12
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_15
invoke-virtual {p1, v0}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget-object v2, p0, Lcom/tencent/tinker/android/dex/TableOfContents;->sections:[Lcom/tencent/tinker/android/dex/TableOfContents$Section;
array-length v3, v2
move v0, v1
:goto_1c
if-ge v0, v3, :cond_3b
aget-object v4, v2, v0
invoke-virtual {v4}, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->exists()Z
move-result v5
if-eqz v5, :cond_38
iget-short v5, v4, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->type:S
invoke-virtual {p1, v5}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeShort(S)V
invoke-virtual {p1, v1}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeShort(S)V
iget v5, v4, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->size:I
invoke-virtual {p1, v5}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
iget v4, v4, Lcom/tencent/tinker/android/dex/TableOfContents$Section;->off:I
invoke-virtual {p1, v4}, Lcom/tencent/tinker/android/dex/Dex$Section;->writeInt(I)V
:cond_38
add-int/lit8 v0, v0, 0x1
goto :goto_1c
:cond_3b
return-void
.end method