JSONScanner.smali

.class public final Lcom/alibaba/fastjson/parser/JSONScanner;
.super Lcom/alibaba/fastjson/parser/JSONLexerBase;
.source "JSONScanner.java"


# static fields
.field protected static final typeFieldName:[C


# instance fields
.field public final ISO8601_LEN_0:I

.field public final ISO8601_LEN_1:I

.field public final ISO8601_LEN_2:I

.field private final text:Ljava/lang/String;


# direct methods
.method static constructor <clinit>()V
    .registers 2

    .line 74
    new-instance v0, Ljava/lang/StringBuilder;

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

    const-string v1, "\""

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

    sget-object v1, Lcom/alibaba/fastjson/JSON;->DEFAULT_TYPE_KEY:Ljava/lang/String;

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

    const-string v1, "\":\""

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

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/String;->toCharArray()[C

    move-result-object v0

    sput-object v0, Lcom/alibaba/fastjson/parser/JSONScanner;->typeFieldName:[C

    return-void
.end method

.method public constructor <init>(Ljava/lang/String;)V
    .registers 3
    .param p1, "input"    # Ljava/lang/String;

    .line 35
    sget v0, Lcom/alibaba/fastjson/JSON;->DEFAULT_PARSER_FEATURE:I

    invoke-direct {p0, p1, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;I)V

    .line 36
    return-void
.end method

.method public constructor <init>(Ljava/lang/String;I)V
    .registers 5
    .param p1, "input"    # Ljava/lang/String;
    .param p2, "features"    # I

    .line 38
    invoke-direct {p0}, Lcom/alibaba/fastjson/parser/JSONLexerBase;-><init>()V

    .line 124
    const-string v0, "0000-00-00"

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    iput v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_0:I

    .line 125
    const-string v0, "0000-00-00T00:00:00"

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    iput v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_1:I

    .line 126
    const-string v0, "0000-00-00T00:00:00.000"

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    iput v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_2:I

    .line 39
    iput p2, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->features:I

    .line 41
    iput-object p1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    .line 42
    const/4 v0, -0x1

    iput v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    .line 44
    invoke-virtual {p0}, Lcom/alibaba/fastjson/parser/JSONScanner;->next()C

    .line 45
    iget-char v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    const v1, 0xfeff

    if-ne v0, v1, :cond_2f

    .line 46
    invoke-virtual {p0}, Lcom/alibaba/fastjson/parser/JSONScanner;->next()C

    .line 48
    :cond_2f
    return-void
.end method

.method public constructor <init>([CI)V
    .registers 4
    .param p1, "input"    # [C
    .param p2, "inputLength"    # I

    .line 63
    sget v0, Lcom/alibaba/fastjson/JSON;->DEFAULT_PARSER_FEATURE:I

    invoke-direct {p0, p1, p2, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>([CII)V

    .line 64
    return-void
.end method

.method public constructor <init>([CII)V
    .registers 6
    .param p1, "input"    # [C
    .param p2, "inputLength"    # I
    .param p3, "features"    # I

    .line 67
    new-instance v0, Ljava/lang/String;

    const/4 v1, 0x0

    invoke-direct {v0, p1, v1, p2}, Ljava/lang/String;-><init>([CII)V

    invoke-direct {p0, v0, p3}, Lcom/alibaba/fastjson/parser/JSONScanner;-><init>(Ljava/lang/String;I)V

    .line 68
    return-void
.end method

.method static checkDate(CCCCCCII)Z
    .registers 13
    .param p0, "y0"    # C
    .param p1, "y1"    # C
    .param p2, "y2"    # C
    .param p3, "y3"    # C
    .param p4, "M0"    # C
    .param p5, "M1"    # C
    .param p6, "d0"    # I
    .param p7, "d1"    # I

    .line 467
    const/16 v0, 0x32

    const/16 v1, 0x31

    const/4 v2, 0x0

    if-eq p0, v1, :cond_a

    if-eq p0, v0, :cond_a

    .line 468
    return v2

    .line 470
    :cond_a
    const/16 v3, 0x30

    if-lt p1, v3, :cond_4e

    const/16 v4, 0x39

    if-le p1, v4, :cond_13

    goto :goto_4e

    .line 473
    :cond_13
    if-lt p2, v3, :cond_4d

    if-le p2, v4, :cond_18

    goto :goto_4d

    .line 476
    :cond_18
    if-lt p3, v3, :cond_4c

    if-le p3, v4, :cond_1d

    goto :goto_4c

    .line 480
    :cond_1d
    if-ne p4, v3, :cond_24

    .line 481
    if-lt p5, v1, :cond_23

    if-le p5, v4, :cond_2d

    .line 482
    :cond_23
    return v2

    .line 484
    :cond_24
    if-ne p4, v1, :cond_4b

    .line 485
    if-eq p5, v3, :cond_2d

    if-eq p5, v1, :cond_2d

    if-eq p5, v0, :cond_2d

    .line 486
    return v2

    .line 492
    :cond_2d
    if-ne p6, v3, :cond_34

    .line 493
    if-lt p7, v1, :cond_33

    if-le p7, v4, :cond_48

    .line 494
    :cond_33
    return v2

    .line 496
    :cond_34
    if-eq p6, v1, :cond_43

    if-ne p6, v0, :cond_39

    goto :goto_43

    .line 500
    :cond_39
    const/16 v0, 0x33

    if-ne p6, v0, :cond_42

    .line 501
    if-eq p7, v3, :cond_48

    if-eq p7, v1, :cond_48

    .line 502
    return v2

    .line 505
    :cond_42
    return v2

    .line 497
    :cond_43
    :goto_43
    if-lt p7, v3, :cond_4a

    if-le p7, v4, :cond_48

    goto :goto_4a

    .line 508
    :cond_48
    const/4 v0, 0x1

    return v0

    .line 498
    :cond_4a
    :goto_4a
    return v2

    .line 489
    :cond_4b
    return v2

    .line 477
    :cond_4c
    :goto_4c
    return v2

    .line 474
    :cond_4d
    :goto_4d
    return v2

    .line 471
    :cond_4e
    :goto_4e
    return v2
.end method

.method private checkTime(CCCCCC)Z
    .registers 12
    .param p1, "h0"    # C
    .param p2, "h1"    # C
    .param p3, "m0"    # C
    .param p4, "m1"    # C
    .param p5, "s0"    # C
    .param p6, "s1"    # C

    .line 412
    const/16 v0, 0x39

    const/4 v1, 0x0

    const/16 v2, 0x30

    if-ne p1, v2, :cond_c

    .line 413
    if-lt p2, v2, :cond_b

    if-le p2, v0, :cond_20

    .line 414
    :cond_b
    return v1

    .line 416
    :cond_c
    const/16 v3, 0x31

    if-ne p1, v3, :cond_15

    .line 417
    if-lt p2, v2, :cond_14

    if-le p2, v0, :cond_20

    .line 418
    :cond_14
    return v1

    .line 420
    :cond_15
    const/16 v3, 0x32

    if-ne p1, v3, :cond_45

    .line 421
    if-lt p2, v2, :cond_44

    const/16 v3, 0x34

    if-le p2, v3, :cond_20

    goto :goto_44

    .line 428
    :cond_20
    const/16 v3, 0x35

    const/16 v4, 0x36

    if-lt p3, v2, :cond_2d

    if-gt p3, v3, :cond_2d

    .line 429
    if-lt p4, v2, :cond_2c

    if-le p4, v0, :cond_32

    .line 430
    :cond_2c
    return v1

    .line 432
    :cond_2d
    if-ne p3, v4, :cond_43

    .line 433
    if-eq p4, v2, :cond_32

    .line 434
    return v1

    .line 440
    :cond_32
    if-lt p5, v2, :cond_3b

    if-gt p5, v3, :cond_3b

    .line 441
    if-lt p6, v2, :cond_3a

    if-le p6, v0, :cond_40

    .line 442
    :cond_3a
    return v1

    .line 444
    :cond_3b
    if-ne p5, v4, :cond_42

    .line 445
    if-eq p6, v2, :cond_40

    .line 446
    return v1

    .line 452
    :cond_40
    const/4 v0, 0x1

    return v0

    .line 449
    :cond_42
    return v1

    .line 437
    :cond_43
    return v1

    .line 422
    :cond_44
    :goto_44
    return v1

    .line 425
    :cond_45
    return v1
.end method

.method private setCalendar(CCCCCCCC)V
    .registers 15
    .param p1, "y0"    # C
    .param p2, "y1"    # C
    .param p3, "y2"    # C
    .param p4, "y3"    # C
    .param p5, "M0"    # C
    .param p6, "M1"    # C
    .param p7, "d0"    # C
    .param p8, "d1"    # C

    .line 456
    invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;

    move-result-object v0

    .line 457
    .local v0, "local":Ljava/util/Locale;
    invoke-static {}, Ljava/util/TimeZone;->getDefault()Ljava/util/TimeZone;

    move-result-object v1

    invoke-static {v1, v0}, Ljava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;

    move-result-object v1

    iput-object v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    .line 458
    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, p1

    mul-int/lit16 v1, v1, 0x3e8

    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, p2

    mul-int/lit8 v2, v2, 0x64

    add-int/2addr v1, v2

    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, p3

    mul-int/lit8 v2, v2, 0xa

    add-int/2addr v1, v2

    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, p4

    add-int/2addr v1, v2

    .line 459
    .local v1, "year":I
    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, p5

    mul-int/lit8 v2, v2, 0xa

    sget-object v3, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v3, v3, p6

    add-int/2addr v2, v3

    const/4 v3, 0x1

    sub-int/2addr v2, v3

    .line 460
    .local v2, "month":I
    sget-object v4, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v4, v4, p7

    mul-int/lit8 v4, v4, 0xa

    sget-object v5, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v5, v5, p8

    add-int/2addr v4, v5

    .line 461
    .local v4, "day":I
    iget-object v5, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v5, v3, v1}, Ljava/util/Calendar;->set(II)V

    .line 462
    iget-object v3, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    const/4 v5, 0x2

    invoke-virtual {v3, v5, v2}, Ljava/util/Calendar;->set(II)V

    .line 463
    iget-object v3, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    const/4 v5, 0x5

    invoke-virtual {v3, v5, v4}, Ljava/util/Calendar;->set(II)V

    .line 464
    return-void
.end method


# virtual methods
.method public final addSymbol(IIILcom/alibaba/fastjson/parser/SymbolTable;)Ljava/lang/String;
    .registers 6
    .param p1, "offset"    # I
    .param p2, "len"    # I
    .param p3, "hash"    # I
    .param p4, "symbolTable"    # Lcom/alibaba/fastjson/parser/SymbolTable;

    .line 81
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {p4, v0, p1, p2, p3}, Lcom/alibaba/fastjson/parser/SymbolTable;->addSymbol(Ljava/lang/String;III)Ljava/lang/String;

    move-result-object v0

    return-object v0
.end method

.method protected final arrayCopy(I[CII)V
    .registers 7
    .param p1, "srcPos"    # I
    .param p2, "dest"    # [C
    .param p3, "destPos"    # I
    .param p4, "length"    # I

    .line 517
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    add-int v1, p1, p4

    invoke-virtual {v0, p1, v1, p2, p3}, Ljava/lang/String;->getChars(II[CI)V

    .line 518
    return-void
.end method

.method public bytesValue()[B
    .registers 4

    .line 85
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    iget v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->np:I

    add-int/lit8 v1, v1, 0x1

    iget v2, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sp:I

    invoke-static {v0, v1, v2}, Lcom/alibaba/fastjson/util/Base64;->decodeFast(Ljava/lang/String;II)[B

    move-result-object v0

    return-object v0
.end method

.method public final charAt(I)C
    .registers 3
    .param p1, "index"    # I

    .line 51
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    if-lt p1, v0, :cond_b

    .line 52
    const/16 v0, 0x1a

    return v0

    .line 55
    :cond_b
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v0, p1}, Ljava/lang/String;->charAt(I)C

    move-result v0

    return v0
.end method

.method protected final copyTo(II[C)V
    .registers 7
    .param p1, "offset"    # I
    .param p2, "count"    # I
    .param p3, "dest"    # [C

    .line 71
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    add-int v1, p1, p2

    const/4 v2, 0x0

    invoke-virtual {v0, p1, v1, p3, v2}, Ljava/lang/String;->getChars(II[CI)V

    .line 72
    return-void
.end method

.method public final indexOf(CI)I
    .registers 4
    .param p1, "ch"    # C
    .param p2, "startIndex"    # I

    .line 77
    iget-object v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v0, p1, p2}, Ljava/lang/String;->indexOf(II)I

    move-result v0

    return v0
.end method

.method public isEOF()Z
    .registers 4

    .line 513
    iget v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    iget-object v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v1

    const/4 v2, 0x1

    if-eq v0, v1, :cond_1e

    iget-char v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    const/16 v1, 0x1a

    if-ne v0, v1, :cond_1d

    iget v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v2

    iget-object v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v1}, Ljava/lang/String;->length()I

    move-result v1

    if-ne v0, v1, :cond_1d

    goto :goto_1e

    :cond_1d
    const/4 v2, 0x0

    :cond_1e
    :goto_1e
    return v2
.end method

.method public final next()C
    .registers 2

    .line 59
    iget v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    iput-char v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    return v0
.end method

.method public final numberString()Ljava/lang/String;
    .registers 4

    .line 113
    iget v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->np:I

    iget v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sp:I

    add-int/2addr v0, v1

    add-int/lit8 v0, v0, -0x1

    invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 115
    .local v0, "chLocal":C
    iget v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sp:I

    .line 116
    .local v1, "sp":I
    const/16 v2, 0x4c

    if-eq v0, v2, :cond_21

    const/16 v2, 0x53

    if-eq v0, v2, :cond_21

    const/16 v2, 0x42

    if-eq v0, v2, :cond_21

    const/16 v2, 0x46

    if-eq v0, v2, :cond_21

    const/16 v2, 0x44

    if-ne v0, v2, :cond_23

    .line 117
    :cond_21
    add-int/lit8 v1, v1, -0x1

    .line 121
    :cond_23
    iget v2, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->np:I

    invoke-virtual {p0, v2, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->subString(II)Ljava/lang/String;

    move-result-object v2

    return-object v2
.end method

.method public scanISO8601DateIfMatch()Z
    .registers 2

    .line 129
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->scanISO8601DateIfMatch(Z)Z

    move-result v0

    return v0
.end method

.method public scanISO8601DateIfMatch(Z)Z
    .registers 37
    .param p1, "strict"    # Z

    .line 133
    move-object/from16 v9, p0

    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v0}, Ljava/lang/String;->length()I

    move-result v0

    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    sub-int v10, v0, v1

    .line 135
    .local v10, "rest":I
    const/4 v11, 0x2

    const/16 v12, 0xd

    const/16 v13, 0x39

    const/4 v14, 0x5

    const/4 v15, 0x1

    const/16 v8, 0x30

    if-nez p1, :cond_bc

    if-le v10, v12, :cond_bc

    .line 136
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 137
    .local v0, "c0":C
    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v1, v15

    invoke-virtual {v9, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v1

    .line 138
    .local v1, "c1":C
    iget v2, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v2, v11

    invoke-virtual {v9, v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v2

    .line 139
    .local v2, "c2":C
    iget v3, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v3, v3, 0x3

    invoke-virtual {v9, v3}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v3

    .line 140
    .local v3, "c3":C
    iget v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v4, v4, 0x4

    invoke-virtual {v9, v4}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v4

    .line 141
    .local v4, "c4":C
    iget v5, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v5, v14

    invoke-virtual {v9, v5}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v5

    .line 143
    .local v5, "c5":C
    iget v6, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v6, v10

    sub-int/2addr v6, v15

    invoke-virtual {v9, v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v6

    .line 144
    .local v6, "c_r0":C
    iget v12, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v12, v10

    sub-int/2addr v12, v11

    invoke-virtual {v9, v12}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v12

    .line 145
    .local v12, "c_r1":C
    const/16 v11, 0x2f

    if-ne v0, v11, :cond_ba

    const/16 v15, 0x44

    if-ne v1, v15, :cond_ba

    const/16 v15, 0x61

    if-ne v2, v15, :cond_ba

    const/16 v15, 0x74

    if-ne v3, v15, :cond_ba

    const/16 v15, 0x65

    if-ne v4, v15, :cond_ba

    const/16 v15, 0x28

    if-ne v5, v15, :cond_ba

    if-ne v6, v11, :cond_ba

    const/16 v11, 0x29

    if-ne v12, v11, :cond_ba

    .line 147
    const/4 v11, -0x1

    .line 148
    .local v11, "plusIndex":I
    const/4 v15, 0x6

    .local v15, "i":I
    :goto_74
    if-ge v15, v10, :cond_8d

    .line 149
    iget v14, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v14, v15

    invoke-virtual {v9, v14}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v14

    .line 150
    .local v14, "c":C
    const/16 v7, 0x2b

    if-ne v14, v7, :cond_84

    .line 151
    move v7, v15

    move v11, v7

    .end local v11    # "plusIndex":I
    .local v7, "plusIndex":I
    goto :goto_89

    .line 152
    .end local v7    # "plusIndex":I
    .restart local v11    # "plusIndex":I
    :cond_84
    if-lt v14, v8, :cond_8d

    if-le v14, v13, :cond_89

    .line 153
    goto :goto_8d

    .line 148
    .end local v14    # "c":C
    :cond_89
    :goto_89
    add-int/lit8 v15, v15, 0x1

    const/4 v14, 0x5

    goto :goto_74

    .line 156
    .end local v15    # "i":I
    :cond_8d
    :goto_8d
    const/4 v7, -0x1

    if-ne v11, v7, :cond_92

    .line 157
    const/4 v7, 0x0

    return v7

    .line 159
    :cond_92
    iget v7, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v7, v7, 0x6

    .line 160
    .local v7, "offset":I
    sub-int v8, v11, v7

    invoke-virtual {v9, v7, v8}, Lcom/alibaba/fastjson/parser/JSONScanner;->subString(II)Ljava/lang/String;

    move-result-object v8

    .line 161
    .local v8, "numberText":Ljava/lang/String;
    invoke-static {v8}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J

    move-result-wide v13

    .line 163
    .local v13, "millis":J
    invoke-static {}, Ljava/util/Locale;->getDefault()Ljava/util/Locale;

    move-result-object v15

    .line 164
    .local v15, "local":Ljava/util/Locale;
    move/from16 v20, v0

    .end local v0    # "c0":C
    .local v20, "c0":C
    invoke-static {}, Ljava/util/TimeZone;->getDefault()Ljava/util/TimeZone;

    move-result-object v0

    invoke-static {v0, v15}, Ljava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;

    move-result-object v0

    iput-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    .line 165
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v0, v13, v14}, Ljava/util/Calendar;->setTimeInMillis(J)V

    .line 167
    const/4 v0, 0x5

    iput v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->token:I

    .line 168
    const/4 v0, 0x1

    return v0

    .line 145
    .end local v7    # "offset":I
    .end local v8    # "numberText":Ljava/lang/String;
    .end local v11    # "plusIndex":I
    .end local v13    # "millis":J
    .end local v15    # "local":Ljava/util/Locale;
    .end local v20    # "c0":C
    .restart local v0    # "c0":C
    :cond_ba
    move/from16 v20, v0

    .line 172
    .end local v0    # "c0":C
    .end local v1    # "c1":C
    .end local v2    # "c2":C
    .end local v3    # "c3":C
    .end local v4    # "c4":C
    .end local v5    # "c5":C
    .end local v6    # "c_r0":C
    .end local v12    # "c_r1":C
    :cond_bc
    const/16 v11, 0x11

    const/16 v12, 0x8

    const/16 v14, 0xc

    const/16 v15, 0xb

    const/16 v7, 0xe

    if-eq v10, v12, :cond_3cf

    if-eq v10, v7, :cond_3cf

    if-ne v10, v11, :cond_d2

    const/16 v11, 0x8

    const/16 v13, 0xe

    goto/16 :goto_3d3

    .line 243
    :cond_d2
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_0:I

    if-ge v10, v0, :cond_d8

    .line 244
    const/4 v0, 0x0

    return v0

    .line 247
    :cond_d8
    const/4 v0, 0x0

    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v1, v1, 0x4

    invoke-virtual {v9, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v1

    const/16 v6, 0x2d

    if-eq v1, v6, :cond_e6

    .line 248
    return v0

    .line 250
    :cond_e6
    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v1, v1, 0x7

    invoke-virtual {v9, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v1

    if-eq v1, v6, :cond_f1

    .line 251
    return v0

    .line 254
    :cond_f1
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v28

    .line 255
    .local v28, "y0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x1

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v29

    .line 256
    .local v29, "y1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x2

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v30

    .line 257
    .local v30, "y2":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x3

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v31

    .line 258
    .local v31, "y3":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x5

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v32

    .line 259
    .local v32, "M0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x6

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v33

    .line 260
    .local v33, "M1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v12

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v12

    .line 261
    .local v12, "d0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x9

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v34

    .line 262
    .local v34, "d1":C
    move/from16 v20, v28

    move/from16 v21, v29

    move/from16 v22, v30

    move/from16 v23, v31

    move/from16 v24, v32

    move/from16 v25, v33

    move/from16 v26, v12

    move/from16 v27, v34

    invoke-static/range {v20 .. v27}, Lcom/alibaba/fastjson/parser/JSONScanner;->checkDate(CCCCCCII)Z

    move-result v0

    if-nez v0, :cond_147

    .line 263
    const/16 v19, 0x0

    return v19

    .line 266
    :cond_147
    const/16 v19, 0x0

    move-object/from16 v0, p0

    move/from16 v1, v28

    move/from16 v2, v29

    move/from16 v3, v30

    move/from16 v4, v31

    move/from16 v5, v32

    move/from16 v6, v33

    const/4 v11, 0x0

    const/16 v13, 0xe

    move v7, v12

    move/from16 v21, v12

    const/16 v12, 0x30

    .end local v12    # "d0":C
    .local v21, "d0":C
    move/from16 v8, v34

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/parser/JSONScanner;->setCalendar(CCCCCCCC)V

    .line 268
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0xa

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v7

    .line 269
    .local v7, "t":C
    const/16 v0, 0x54

    if-eq v7, v0, :cond_1a8

    const/16 v0, 0x20

    if-ne v7, v0, :cond_177

    if-nez p1, :cond_177

    goto :goto_1a8

    .line 273
    :cond_177
    const/16 v0, 0x22

    if-eq v7, v0, :cond_181

    const/16 v0, 0x1a

    if-ne v7, v0, :cond_180

    goto :goto_181

    .line 284
    :cond_180
    return v11

    .line 274
    :cond_181
    :goto_181
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v0, v15, v11}, Ljava/util/Calendar;->set(II)V

    .line 275
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v0, v14, v11}, Ljava/util/Calendar;->set(II)V

    .line 276
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    const/16 v1, 0xd

    invoke-virtual {v0, v1, v11}, Ljava/util/Calendar;->set(II)V

    .line 277
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v0, v13, v11}, Ljava/util/Calendar;->set(II)V

    .line 279
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0xa

    iput v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    iput-char v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    .line 281
    const/4 v0, 0x5

    iput v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->token:I

    .line 282
    const/4 v0, 0x1

    return v0

    .line 270
    :cond_1a8
    :goto_1a8
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_1:I

    if-ge v10, v0, :cond_1ad

    .line 271
    return v11

    .line 287
    :cond_1ad
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/16 v1, 0xd

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    const/16 v8, 0x3a

    if-eq v0, v8, :cond_1bb

    .line 288
    return v11

    .line 290
    :cond_1bb
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x10

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    if-eq v0, v8, :cond_1c6

    .line 291
    return v11

    .line 294
    :cond_1c6
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v15

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v22

    .line 295
    .local v22, "h0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v14

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v23

    .line 296
    .local v23, "h1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v13

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v24

    .line 297
    .local v24, "m0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0xf

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v25

    .line 298
    .local v25, "m1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/16 v1, 0x11

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v19

    .line 299
    .local v19, "s0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x12

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v26

    .line 301
    .local v26, "s1":C
    move-object/from16 v0, p0

    move/from16 v1, v22

    move/from16 v2, v23

    move/from16 v3, v24

    move/from16 v4, v25

    move/from16 v5, v19

    move/from16 v6, v26

    invoke-direct/range {v0 .. v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->checkTime(CCCCCC)Z

    move-result v0

    if-nez v0, :cond_209

    .line 302
    return v11

    .line 305
    :cond_209
    sget-object v0, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v0, v0, v22

    mul-int/lit8 v0, v0, 0xa

    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, v23

    add-int/2addr v0, v1

    .line 306
    .local v0, "hour":I
    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, v24

    mul-int/lit8 v1, v1, 0xa

    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, v25

    add-int/2addr v1, v2

    .line 307
    .local v1, "minute":I
    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, v19

    mul-int/lit8 v2, v2, 0xa

    sget-object v3, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v3, v3, v26

    add-int/2addr v2, v3

    .line 308
    .local v2, "seconds":I
    iget-object v3, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v3, v15, v0}, Ljava/util/Calendar;->set(II)V

    .line 309
    iget-object v3, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v3, v14, v1}, Ljava/util/Calendar;->set(II)V

    .line 310
    iget-object v3, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    const/16 v4, 0xd

    invoke-virtual {v3, v4, v2}, Ljava/util/Calendar;->set(II)V

    .line 312
    iget v3, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v3, v3, 0x13

    invoke-virtual {v9, v3}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v3

    .line 313
    .local v3, "dot":C
    const/16 v4, 0x2e

    if-ne v3, v4, :cond_3b4

    .line 314
    iget v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ISO8601_LEN_2:I

    if-ge v10, v4, :cond_24c

    .line 315
    return v11

    .line 326
    :cond_24c
    iget v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v4, v4, 0x14

    invoke-virtual {v9, v4}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v4

    .line 327
    .local v4, "S0":C
    if-lt v4, v12, :cond_3ae

    const/16 v5, 0x39

    if-le v4, v5, :cond_261

    move/from16 v16, v0

    move/from16 v20, v1

    const/4 v0, 0x0

    goto/16 :goto_3b3

    .line 330
    :cond_261
    sget-object v5, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v5, v5, v4

    .line 331
    .local v5, "millis":I
    const/4 v6, 0x1

    .line 334
    .local v6, "millisLen":I
    iget v14, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v14, v14, 0x15

    invoke-virtual {v9, v14}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v14

    .line 335
    .local v14, "S1":C
    if-lt v14, v12, :cond_27d

    const/16 v15, 0x39

    if-gt v14, v15, :cond_27d

    .line 336
    mul-int/lit8 v15, v5, 0xa

    sget-object v16, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v16, v16, v14

    add-int v5, v15, v16

    .line 337
    const/4 v6, 0x2

    .line 341
    .end local v14    # "S1":C
    :cond_27d
    const/4 v14, 0x2

    if-ne v6, v14, :cond_297

    .line 342
    iget v14, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v14, v14, 0x16

    invoke-virtual {v9, v14}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v14

    .line 343
    .local v14, "S2":C
    if-lt v14, v12, :cond_297

    const/16 v15, 0x39

    if-gt v14, v15, :cond_297

    .line 344
    mul-int/lit8 v15, v5, 0xa

    sget-object v16, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v16, v16, v14

    add-int v5, v15, v16

    .line 345
    const/4 v6, 0x3

    .line 349
    .end local v14    # "S2":C
    :cond_297
    iget-object v14, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v14, v13, v5}, Ljava/util/Calendar;->set(II)V

    .line 351
    const/4 v13, 0x0

    .line 352
    .local v13, "timzeZoneLength":I
    iget v14, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v14, v14, 0x14

    add-int/2addr v14, v6

    invoke-virtual {v9, v14}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v14

    .line 353
    .local v14, "timeZoneFlag":C
    const/16 v15, 0x2b

    if-eq v14, v15, :cond_2b5

    const/16 v15, 0x2d

    if-ne v14, v15, :cond_2af

    goto :goto_2b7

    :cond_2af
    move/from16 v16, v0

    move/from16 v20, v1

    goto/16 :goto_37b

    :cond_2b5
    const/16 v15, 0x2d

    .line 354
    :goto_2b7
    iget v15, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v15, v15, 0x14

    add-int/2addr v15, v6

    const/16 v16, 0x1

    add-int/lit8 v15, v15, 0x1

    invoke-virtual {v9, v15}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v15

    .line 355
    .local v15, "t0":C
    if-lt v15, v12, :cond_3a8

    const/16 v11, 0x31

    if-le v15, v11, :cond_2d1

    move/from16 v16, v0

    move/from16 v20, v1

    const/4 v0, 0x0

    goto/16 :goto_3ad

    .line 359
    :cond_2d1
    iget v11, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v11, v11, 0x14

    add-int/2addr v11, v6

    const/16 v16, 0x2

    add-int/lit8 v11, v11, 0x2

    invoke-virtual {v9, v11}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v11

    .line 360
    .local v11, "t1":C
    if-lt v11, v12, :cond_3a2

    const/16 v12, 0x39

    if-le v11, v12, :cond_2ea

    move/from16 v16, v0

    move/from16 v20, v1

    goto/16 :goto_3a6

    .line 364
    :cond_2ea
    iget v12, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v12, v12, 0x14

    add-int/2addr v12, v6

    add-int/lit8 v12, v12, 0x3

    invoke-virtual {v9, v12}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v12

    .line 365
    .local v12, "t2":C
    if-ne v12, v8, :cond_324

    .line 366
    iget v8, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v8, v8, 0x14

    add-int/2addr v8, v6

    add-int/lit8 v8, v8, 0x4

    invoke-virtual {v9, v8}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v8

    .line 367
    .local v8, "t3":C
    move/from16 v16, v0

    const/16 v0, 0x30

    .end local v0    # "hour":I
    .local v16, "hour":I
    if-eq v8, v0, :cond_30b

    .line 368
    const/16 v17, 0x0

    return v17

    .line 371
    :cond_30b
    const/16 v17, 0x0

    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x14

    add-int/2addr v0, v6

    const/16 v18, 0x5

    add-int/lit8 v0, v0, 0x5

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 372
    .local v0, "t4":C
    move/from16 v20, v1

    const/16 v1, 0x30

    .end local v1    # "minute":I
    .local v20, "minute":I
    if-eq v0, v1, :cond_321

    .line 373
    return v17

    .line 375
    :cond_321
    const/4 v0, 0x6

    .line 376
    .end local v8    # "t3":C
    .end local v13    # "timzeZoneLength":I
    .local v0, "timzeZoneLength":I
    move v13, v0

    goto :goto_340

    .end local v16    # "hour":I
    .end local v20    # "minute":I
    .local v0, "hour":I
    .restart local v1    # "minute":I
    .restart local v13    # "timzeZoneLength":I
    :cond_324
    move/from16 v16, v0

    move/from16 v20, v1

    const/16 v1, 0x30

    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .restart local v16    # "hour":I
    .restart local v20    # "minute":I
    if-ne v12, v1, :cond_33e

    .line 377
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x14

    add-int/2addr v0, v6

    add-int/lit8 v0, v0, 0x4

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 378
    .local v0, "t3":C
    if-eq v0, v1, :cond_33b

    .line 379
    const/4 v1, 0x0

    return v1

    .line 381
    :cond_33b
    const/4 v0, 0x5

    .line 382
    .end local v13    # "timzeZoneLength":I
    .local v0, "timzeZoneLength":I
    move v13, v0

    goto :goto_340

    .line 383
    .end local v0    # "timzeZoneLength":I
    .restart local v13    # "timzeZoneLength":I
    :cond_33e
    const/4 v0, 0x3

    move v13, v0

    .line 386
    :goto_340
    sget-object v0, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v0, v0, v15

    mul-int/lit8 v0, v0, 0xa

    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, v11

    add-int/2addr v0, v1

    mul-int/lit16 v0, v0, 0xe10

    mul-int/lit16 v0, v0, 0x3e8

    .line 387
    .local v0, "timeZoneOffset":I
    const/16 v1, 0x2d

    if-ne v14, v1, :cond_354

    .line 388
    neg-int v0, v0

    .line 391
    :cond_354
    iget-object v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v1}, Ljava/util/Calendar;->getTimeZone()Ljava/util/TimeZone;

    move-result-object v1

    invoke-virtual {v1}, Ljava/util/TimeZone;->getRawOffset()I

    move-result v1

    if-eq v1, v0, :cond_379

    .line 392
    invoke-static {v0}, Ljava/util/TimeZone;->getAvailableIDs(I)[Ljava/lang/String;

    move-result-object v1

    .line 393
    .local v1, "timeZoneIDs":[Ljava/lang/String;
    array-length v8, v1

    if-lez v8, :cond_376

    .line 394
    const/4 v8, 0x0

    aget-object v17, v1, v8

    invoke-static/range {v17 .. v17}, Ljava/util/TimeZone;->getTimeZone(Ljava/lang/String;)Ljava/util/TimeZone;

    move-result-object v8

    .line 395
    .local v8, "timeZone":Ljava/util/TimeZone;
    move/from16 v17, v0

    .end local v0    # "timeZoneOffset":I
    .local v17, "timeZoneOffset":I
    iget-object v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v0, v8}, Ljava/util/Calendar;->setTimeZone(Ljava/util/TimeZone;)V

    goto :goto_37b

    .line 393
    .end local v8    # "timeZone":Ljava/util/TimeZone;
    .end local v17    # "timeZoneOffset":I
    .restart local v0    # "timeZoneOffset":I
    :cond_376
    move/from16 v17, v0

    .end local v0    # "timeZoneOffset":I
    .restart local v17    # "timeZoneOffset":I
    goto :goto_37b

    .line 391
    .end local v1    # "timeZoneIDs":[Ljava/lang/String;
    .end local v17    # "timeZoneOffset":I
    .restart local v0    # "timeZoneOffset":I
    :cond_379
    move/from16 v17, v0

    .line 401
    .end local v0    # "timeZoneOffset":I
    .end local v11    # "t1":C
    .end local v12    # "t2":C
    .end local v15    # "t0":C
    :goto_37b
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v1, v6, 0x14

    add-int/2addr v1, v13

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 402
    .local v0, "end":C
    const/16 v1, 0x1a

    if-eq v0, v1, :cond_38f

    const/16 v1, 0x22

    if-eq v0, v1, :cond_38f

    .line 403
    const/4 v1, 0x0

    return v1

    .line 405
    :cond_38f
    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v8, v6, 0x14

    add-int/2addr v8, v13

    add-int/2addr v1, v8

    iput v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v1

    iput-char v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    .line 407
    const/4 v1, 0x5

    iput v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->token:I

    .line 408
    const/4 v1, 0x1

    return v1

    .line 360
    .end local v16    # "hour":I
    .end local v20    # "minute":I
    .local v0, "hour":I
    .local v1, "minute":I
    .restart local v11    # "t1":C
    .restart local v15    # "t0":C
    :cond_3a2
    move/from16 v16, v0

    move/from16 v20, v1

    .line 361
    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .restart local v16    # "hour":I
    .restart local v20    # "minute":I
    :goto_3a6
    const/4 v0, 0x0

    return v0

    .line 355
    .end local v11    # "t1":C
    .end local v16    # "hour":I
    .end local v20    # "minute":I
    .restart local v0    # "hour":I
    .restart local v1    # "minute":I
    :cond_3a8
    move/from16 v16, v0

    move/from16 v20, v1

    const/4 v0, 0x0

    .line 356
    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .restart local v16    # "hour":I
    .restart local v20    # "minute":I
    :goto_3ad
    return v0

    .line 327
    .end local v5    # "millis":I
    .end local v6    # "millisLen":I
    .end local v13    # "timzeZoneLength":I
    .end local v14    # "timeZoneFlag":C
    .end local v15    # "t0":C
    .end local v16    # "hour":I
    .end local v20    # "minute":I
    .restart local v0    # "hour":I
    .restart local v1    # "minute":I
    :cond_3ae
    move/from16 v16, v0

    move/from16 v20, v1

    const/4 v0, 0x0

    .line 328
    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .restart local v16    # "hour":I
    .restart local v20    # "minute":I
    :goto_3b3
    return v0

    .line 318
    .end local v4    # "S0":C
    .end local v16    # "hour":I
    .end local v20    # "minute":I
    .restart local v0    # "hour":I
    .restart local v1    # "minute":I
    :cond_3b4
    move/from16 v16, v0

    move/from16 v20, v1

    const/4 v0, 0x0

    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .restart local v16    # "hour":I
    .restart local v20    # "minute":I
    iget-object v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v1, v13, v0}, Ljava/util/Calendar;->set(II)V

    .line 320
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x13

    iput v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    iput-char v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->ch:C

    .line 322
    const/4 v0, 0x5

    iput v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->token:I

    .line 323
    const/4 v0, 0x1

    return v0

    .line 172
    .end local v2    # "seconds":I
    .end local v3    # "dot":C
    .end local v7    # "t":C
    .end local v16    # "hour":I
    .end local v19    # "s0":C
    .end local v20    # "minute":I
    .end local v21    # "d0":C
    .end local v22    # "h0":C
    .end local v23    # "h1":C
    .end local v24    # "m0":C
    .end local v25    # "m1":C
    .end local v26    # "s1":C
    .end local v28    # "y0":C
    .end local v29    # "y1":C
    .end local v30    # "y2":C
    .end local v31    # "y3":C
    .end local v32    # "M0":C
    .end local v33    # "M1":C
    .end local v34    # "d1":C
    :cond_3cf
    const/16 v11, 0x8

    const/16 v13, 0xe

    .line 173
    :goto_3d3
    if-eqz p1, :cond_3d7

    .line 174
    const/4 v0, 0x0

    return v0

    .line 177
    :cond_3d7
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v12

    .line 178
    .local v12, "y0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x1

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v21

    .line 179
    .local v21, "y1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x2

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v17

    .line 180
    .local v17, "y2":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x3

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v22

    .line 181
    .local v22, "y3":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x4

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v23

    .line 182
    .local v23, "M0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/4 v1, 0x5

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v24

    .line 183
    .local v24, "M1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x6

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v25

    .line 184
    .local v25, "d0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x7

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v26

    .line 186
    .local v26, "d1":C
    move v1, v12

    move/from16 v2, v21

    move/from16 v3, v17

    move/from16 v4, v22

    move/from16 v5, v23

    move/from16 v6, v24

    move/from16 v7, v25

    move/from16 v8, v26

    invoke-static/range {v1 .. v8}, Lcom/alibaba/fastjson/parser/JSONScanner;->checkDate(CCCCCCII)Z

    move-result v0

    if-nez v0, :cond_42c

    .line 187
    const/4 v0, 0x0

    return v0

    .line 190
    :cond_42c
    move-object/from16 v0, p0

    move v1, v12

    move/from16 v2, v21

    move/from16 v3, v17

    move/from16 v4, v22

    move/from16 v5, v23

    move/from16 v6, v24

    move/from16 v7, v25

    move/from16 v8, v26

    invoke-direct/range {v0 .. v8}, Lcom/alibaba/fastjson/parser/JSONScanner;->setCalendar(CCCCCCCC)V

    .line 193
    if-eq v10, v11, :cond_4ef

    .line 194
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v11

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v7

    .line 195
    .local v7, "h0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0x9

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v8

    .line 196
    .local v8, "h1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v0, v0, 0xa

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v11

    .line 197
    .local v11, "m0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v15

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v28

    .line 198
    .local v28, "m1":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v14

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v29

    .line 199
    .local v29, "s0":C
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    const/16 v1, 0xd

    add-int/2addr v0, v1

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v30

    .line 201
    .local v30, "s1":C
    move-object/from16 v0, p0

    move v1, v7

    move v2, v8

    move v3, v11

    move/from16 v4, v28

    move/from16 v5, v29

    move/from16 v6, v30

    invoke-direct/range {v0 .. v6}, Lcom/alibaba/fastjson/parser/JSONScanner;->checkTime(CCCCCC)Z

    move-result v0

    if-nez v0, :cond_483

    .line 202
    const/4 v0, 0x0

    return v0

    .line 205
    :cond_483
    const/16 v0, 0x11

    if-ne v10, v0, :cond_4cc

    .line 206
    iget v0, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/2addr v0, v13

    invoke-virtual {v9, v0}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v0

    .line 207
    .local v0, "S0":C
    iget v1, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v1, v1, 0xf

    invoke-virtual {v9, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v1

    .line 208
    .local v1, "S1":C
    iget v2, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->bp:I

    add-int/lit8 v2, v2, 0x10

    invoke-virtual {v9, v2}, Lcom/alibaba/fastjson/parser/JSONScanner;->charAt(I)C

    move-result v2

    .line 209
    .local v2, "S2":C
    const/16 v3, 0x30

    if-lt v0, v3, :cond_4ca

    const/16 v4, 0x39

    if-le v0, v4, :cond_4a8

    const/4 v3, 0x0

    goto :goto_4cb

    .line 212
    :cond_4a8
    if-lt v1, v3, :cond_4c8

    if-le v1, v4, :cond_4ae

    const/4 v3, 0x0

    goto :goto_4c9

    .line 215
    :cond_4ae
    if-lt v2, v3, :cond_4c6

    if-le v2, v4, :cond_4b3

    goto :goto_4c6

    .line 219
    :cond_4b3
    sget-object v3, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v3, v3, v0

    mul-int/lit8 v3, v3, 0x64

    sget-object v4, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v4, v4, v1

    mul-int/lit8 v4, v4, 0xa

    add-int/2addr v3, v4

    sget-object v4, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v4, v4, v2

    add-int/2addr v3, v4

    .line 220
    .end local v0    # "S0":C
    .end local v1    # "S1":C
    .end local v2    # "S2":C
    .local v3, "millis":I
    goto :goto_4cd

    .line 216
    .end local v3    # "millis":I
    .restart local v0    # "S0":C
    .restart local v1    # "S1":C
    .restart local v2    # "S2":C
    :cond_4c6
    :goto_4c6
    const/4 v3, 0x0

    return v3

    .line 212
    :cond_4c8
    const/4 v3, 0x0

    .line 213
    :goto_4c9
    return v3

    .line 209
    :cond_4ca
    const/4 v3, 0x0

    .line 210
    :goto_4cb
    return v3

    .line 221
    .end local v0    # "S0":C
    .end local v1    # "S1":C
    .end local v2    # "S2":C
    :cond_4cc
    const/4 v3, 0x0

    .line 224
    .restart local v3    # "millis":I
    :goto_4cd
    sget-object v0, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v0, v0, v7

    mul-int/lit8 v0, v0, 0xa

    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, v8

    add-int/2addr v0, v1

    .line 225
    .local v0, "hour":I
    sget-object v1, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v1, v1, v11

    mul-int/lit8 v1, v1, 0xa

    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, v28

    add-int/2addr v1, v2

    .line 226
    .local v1, "minute":I
    sget-object v2, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v2, v2, v29

    mul-int/lit8 v2, v2, 0xa

    sget-object v4, Lcom/alibaba/fastjson/parser/JSONScanner;->digits:[I

    aget v4, v4, v30

    add-int/2addr v2, v4

    .line 227
    .end local v7    # "h0":C
    .end local v8    # "h1":C
    .end local v11    # "m0":C
    .end local v28    # "m1":C
    .end local v29    # "s0":C
    .end local v30    # "s1":C
    .local v2, "seconds":I
    goto :goto_4f3

    .line 228
    .end local v0    # "hour":I
    .end local v1    # "minute":I
    .end local v2    # "seconds":I
    .end local v3    # "millis":I
    :cond_4ef
    const/4 v0, 0x0

    .line 229
    .restart local v0    # "hour":I
    const/4 v1, 0x0

    .line 230
    .restart local v1    # "minute":I
    const/4 v2, 0x0

    .line 231
    .restart local v2    # "seconds":I
    const/4 v3, 0x0

    .line 234
    .restart local v3    # "millis":I
    :goto_4f3
    iget-object v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v4, v15, v0}, Ljava/util/Calendar;->set(II)V

    .line 235
    iget-object v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v4, v14, v1}, Ljava/util/Calendar;->set(II)V

    .line 236
    iget-object v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    const/16 v5, 0xd

    invoke-virtual {v4, v5, v2}, Ljava/util/Calendar;->set(II)V

    .line 237
    iget-object v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->calendar:Ljava/util/Calendar;

    invoke-virtual {v4, v13, v3}, Ljava/util/Calendar;->set(II)V

    .line 239
    const/4 v4, 0x5

    iput v4, v9, Lcom/alibaba/fastjson/parser/JSONScanner;->token:I

    .line 240
    const/4 v4, 0x1

    return v4
.end method

.method public final stringVal()Ljava/lang/String;
    .registers 5

    .line 96
    iget-boolean v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->hasSpecial:Z

    if-nez v0, :cond_f

    .line 98
    iget v0, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->np:I

    add-int/lit8 v0, v0, 0x1

    iget v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sp:I

    invoke-virtual {p0, v0, v1}, Lcom/alibaba/fastjson/parser/JSONScanner;->subString(II)Ljava/lang/String;

    move-result-object v0

    return-object v0

    .line 100
    :cond_f
    new-instance v0, Ljava/lang/String;

    iget-object v1, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sbuf:[C

    const/4 v2, 0x0

    iget v3, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->sp:I

    invoke-direct {v0, v1, v2, v3}, Ljava/lang/String;-><init>([CII)V

    return-object v0
.end method

.method public final subString(II)Ljava/lang/String;
    .registers 7
    .param p1, "offset"    # I
    .param p2, "count"    # I

    .line 105
    new-array v0, p2, [C

    .line 106
    .local v0, "chars":[C
    move v1, p1

    .local v1, "i":I
    :goto_3
    add-int v2, p1, p2

    if-ge v1, v2, :cond_14

    .line 107
    sub-int v2, v1, p1

    iget-object v3, p0, Lcom/alibaba/fastjson/parser/JSONScanner;->text:Ljava/lang/String;

    invoke-virtual {v3, v1}, Ljava/lang/String;->charAt(I)C

    move-result v3

    aput-char v3, v0, v2

    .line 106
    add-int/lit8 v1, v1, 0x1

    goto :goto_3

    .line 109
    .end local v1    # "i":I
    :cond_14
    new-instance v1, Ljava/lang/String;

    invoke-direct {v1, v0}, Ljava/lang/String;-><init>([C)V

    return-object v1
.end method