p0.smali

.class public final Lcom/alibaba/fastjson/serializer/p0;
.super Ljava/lang/Object;
.source "SourceFile"

# interfaces
.implements Lcom/alibaba/fastjson/serializer/o0;


# static fields
.field public static a:Lcom/alibaba/fastjson/serializer/p0;


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

    new-instance v0, Lcom/alibaba/fastjson/serializer/p0;

    invoke-direct {v0}, Lcom/alibaba/fastjson/serializer/p0;-><init>()V

    sput-object v0, Lcom/alibaba/fastjson/serializer/p0;->a:Lcom/alibaba/fastjson/serializer/p0;

    return-void
.end method

.method public constructor <init>()V
    .registers 1

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

    return-void
.end method


# virtual methods
.method public final d(Lcom/alibaba/fastjson/serializer/e0;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Type;I)V
    .registers 23
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

    move-object/from16 v0, p2

    move-object/from16 v1, p1

    .line 1
    iget-object v1, v1, Lcom/alibaba/fastjson/serializer/e0;->j:Lcom/alibaba/fastjson/serializer/y0;

    if-nez v0, :cond_e

    .line 2
    sget-object v0, Lcom/alibaba/fastjson/serializer/z0;->WriteNullListAsEmpty:Lcom/alibaba/fastjson/serializer/z0;

    invoke-virtual {v1, v0}, Lcom/alibaba/fastjson/serializer/y0;->R(Lcom/alibaba/fastjson/serializer/z0;)V

    return-void

    .line 3
    :cond_e
    instance-of v2, v0, [I

    const/16 v3, 0x2c

    const/16 v4, 0x5d

    const/16 v5, 0x5b

    const/4 v6, 0x0

    if-eqz v2, :cond_32

    .line 4
    check-cast v0, [I

    .line 5
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 6
    :goto_1e
    array-length v2, v0

    if-ge v6, v2, :cond_2e

    if-eqz v6, :cond_26

    .line 7
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 8
    :cond_26
    aget v2, v0, v6

    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->H(I)V

    add-int/lit8 v6, v6, 0x1

    goto :goto_1e

    .line 9
    :cond_2e
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 10
    :cond_32
    instance-of v2, v0, [S

    if-eqz v2, :cond_4f

    .line 11
    check-cast v0, [S

    .line 12
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 13
    :goto_3b
    array-length v2, v0

    if-ge v6, v2, :cond_4b

    if-eqz v6, :cond_43

    .line 14
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 15
    :cond_43
    aget-short v2, v0, v6

    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->H(I)V

    add-int/lit8 v6, v6, 0x1

    goto :goto_3b

    .line 16
    :cond_4b
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 17
    :cond_4f
    instance-of v2, v0, [J

    if-eqz v2, :cond_6c

    .line 18
    check-cast v0, [J

    .line 19
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 20
    :goto_58
    array-length v2, v0

    if-ge v6, v2, :cond_68

    if-eqz v6, :cond_60

    .line 21
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 22
    :cond_60
    aget-wide v7, v0, v6

    invoke-virtual {v1, v7, v8}, Lcom/alibaba/fastjson/serializer/y0;->J(J)V

    add-int/lit8 v6, v6, 0x1

    goto :goto_58

    .line 23
    :cond_68
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 24
    :cond_6c
    instance-of v2, v0, [Z

    if-eqz v2, :cond_93

    .line 25
    check-cast v0, [Z

    .line 26
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 27
    :goto_75
    array-length v2, v0

    if-ge v6, v2, :cond_8f

    if-eqz v6, :cond_7d

    .line 28
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 29
    :cond_7d
    aget-boolean v2, v0, v6

    if-eqz v2, :cond_87

    const-string v2, "true"

    .line 30
    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->write(Ljava/lang/String;)V

    goto :goto_8c

    :cond_87
    const-string v2, "false"

    .line 31
    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->write(Ljava/lang/String;)V

    :goto_8c
    add-int/lit8 v6, v6, 0x1

    goto :goto_75

    .line 32
    :cond_8f
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 33
    :cond_93
    instance-of v2, v0, [F

    if-eqz v2, :cond_be

    .line 34
    check-cast v0, [F

    .line 35
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 36
    :goto_9c
    array-length v2, v0

    if-ge v6, v2, :cond_ba

    if-eqz v6, :cond_a4

    .line 37
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 38
    :cond_a4
    aget v2, v0, v6

    .line 39
    invoke-static {v2}, Ljava/lang/Float;->isNaN(F)Z

    move-result v5

    if-eqz v5, :cond_b0

    .line 40
    invoke-virtual {v1}, Lcom/alibaba/fastjson/serializer/y0;->K()V

    goto :goto_b7

    .line 41
    :cond_b0
    invoke-static {v2}, Ljava/lang/Float;->toString(F)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;

    :goto_b7
    add-int/lit8 v6, v6, 0x1

    goto :goto_9c

    .line 42
    :cond_ba
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 43
    :cond_be
    instance-of v2, v0, [D

    if-eqz v2, :cond_e9

    .line 44
    check-cast v0, [D

    .line 45
    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 46
    :goto_c7
    array-length v2, v0

    if-ge v6, v2, :cond_e5

    if-eqz v6, :cond_cf

    .line 47
    invoke-virtual {v1, v3}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 48
    :cond_cf
    aget-wide v7, v0, v6

    .line 49
    invoke-static {v7, v8}, Ljava/lang/Double;->isNaN(D)Z

    move-result v2

    if-eqz v2, :cond_db

    .line 50
    invoke-virtual {v1}, Lcom/alibaba/fastjson/serializer/y0;->K()V

    goto :goto_e2

    .line 51
    :cond_db
    invoke-static {v7, v8}, Ljava/lang/Double;->toString(D)Ljava/lang/String;

    move-result-object v2

    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->a(Ljava/lang/CharSequence;)Lcom/alibaba/fastjson/serializer/y0;

    :goto_e2
    add-int/lit8 v6, v6, 0x1

    goto :goto_c7

    .line 52
    :cond_e5
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    return-void

    .line 53
    :cond_e9
    instance-of v2, v0, [B

    if-eqz v2, :cond_22f

    .line 54
    check-cast v0, [B

    .line 55
    invoke-static {v1}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

    .line 56
    array-length v2, v0

    .line 57
    iget-boolean v3, v1, Lcom/alibaba/fastjson/serializer/y0;->e:Z

    if-eqz v3, :cond_fa

    const/16 v4, 0x27

    goto :goto_fc

    :cond_fa
    const/16 v4, 0x22

    :goto_fc
    if-nez v2, :cond_10a

    if-eqz v3, :cond_103

    const-string v0, "\'\'"

    goto :goto_105

    :cond_103
    const-string v0, "\"\""

    .line 58
    :goto_105
    invoke-virtual {v1, v0}, Lcom/alibaba/fastjson/serializer/y0;->write(Ljava/lang/String;)V

    goto/16 :goto_22e

    .line 59
    :cond_10a
    sget-object v3, Lcom/alibaba/fastjson/util/e;->o:[C

    .line 60
    div-int/lit8 v5, v2, 0x3

    mul-int/lit8 v5, v5, 0x3

    add-int/lit8 v7, v2, -0x1

    .line 61
    div-int/lit8 v8, v7, 0x3

    add-int/lit8 v8, v8, 0x1

    const/4 v9, 0x2

    shl-int/2addr v8, v9

    .line 62
    iget v10, v1, Lcom/alibaba/fastjson/serializer/y0;->b:I

    add-int/2addr v8, v10

    add-int/2addr v8, v9

    .line 63
    iget-object v11, v1, Lcom/alibaba/fastjson/serializer/y0;->a:[C

    array-length v11, v11

    const/16 v12, 0x3d

    if-le v8, v11, :cond_1a3

    .line 64
    iget-object v11, v1, Lcom/alibaba/fastjson/serializer/y0;->d:Ljava/io/Writer;

    if-eqz v11, :cond_1a0

    .line 65
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    const/4 v8, 0x0

    :goto_12b
    if-ge v8, v5, :cond_169

    add-int/lit8 v10, v8, 0x1

    .line 66
    aget-byte v8, v0, v8

    and-int/lit16 v8, v8, 0xff

    shl-int/lit8 v8, v8, 0x10

    add-int/lit8 v11, v10, 0x1

    aget-byte v10, v0, v10

    and-int/lit16 v10, v10, 0xff

    shl-int/lit8 v10, v10, 0x8

    or-int/2addr v8, v10

    add-int/lit8 v10, v11, 0x1

    aget-byte v11, v0, v11

    and-int/lit16 v11, v11, 0xff

    or-int/2addr v8, v11

    ushr-int/lit8 v11, v8, 0x12

    and-int/lit8 v11, v11, 0x3f

    .line 67
    aget-char v11, v3, v11

    invoke-virtual {v1, v11}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    ushr-int/lit8 v11, v8, 0xc

    and-int/lit8 v11, v11, 0x3f

    .line 68
    aget-char v11, v3, v11

    invoke-virtual {v1, v11}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    ushr-int/lit8 v11, v8, 0x6

    and-int/lit8 v11, v11, 0x3f

    .line 69
    aget-char v11, v3, v11

    invoke-virtual {v1, v11}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    and-int/lit8 v8, v8, 0x3f

    .line 70
    aget-char v8, v3, v8

    invoke-virtual {v1, v8}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    move v8, v10

    goto :goto_12b

    :cond_169
    sub-int/2addr v2, v5

    if-lez v2, :cond_19b

    .line 71
    aget-byte v5, v0, v5

    and-int/lit16 v5, v5, 0xff

    shl-int/lit8 v5, v5, 0xa

    if-ne v2, v9, :cond_17a

    aget-byte v0, v0, v7

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v6, v0, 0x2

    :cond_17a
    or-int v0, v5, v6

    shr-int/lit8 v5, v0, 0xc

    .line 72
    aget-char v5, v3, v5

    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    ushr-int/lit8 v5, v0, 0x6

    and-int/lit8 v5, v5, 0x3f

    .line 73
    aget-char v5, v3, v5

    invoke-virtual {v1, v5}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    if-ne v2, v9, :cond_193

    and-int/lit8 v0, v0, 0x3f

    .line 74
    aget-char v0, v3, v0

    goto :goto_195

    :cond_193
    const/16 v0, 0x3d

    :goto_195
    invoke-virtual {v1, v0}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 75
    invoke-virtual {v1, v12}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    .line 76
    :cond_19b
    invoke-virtual {v1, v4}, Lcom/alibaba/fastjson/serializer/y0;->write(I)V

    goto/16 :goto_22e

    .line 77
    :cond_1a0
    invoke-virtual {v1, v8}, Lcom/alibaba/fastjson/serializer/y0;->n(I)V

    .line 78
    :cond_1a3
    iput v8, v1, Lcom/alibaba/fastjson/serializer/y0;->b:I

    .line 79
    iget-object v11, v1, Lcom/alibaba/fastjson/serializer/y0;->a:[C

    add-int/lit8 v13, v10, 0x1

    aput-char v4, v11, v10

    const/4 v10, 0x0

    :goto_1ac
    if-ge v10, v5, :cond_1f0

    add-int/lit8 v11, v10, 0x1

    .line 80
    aget-byte v10, v0, v10

    and-int/lit16 v10, v10, 0xff

    shl-int/lit8 v10, v10, 0x10

    add-int/lit8 v14, v11, 0x1

    aget-byte v11, v0, v11

    and-int/lit16 v11, v11, 0xff

    shl-int/lit8 v11, v11, 0x8

    or-int/2addr v10, v11

    add-int/lit8 v11, v14, 0x1

    aget-byte v14, v0, v14

    and-int/lit16 v14, v14, 0xff

    or-int/2addr v10, v14

    .line 81
    iget-object v14, v1, Lcom/alibaba/fastjson/serializer/y0;->a:[C

    add-int/lit8 v15, v13, 0x1

    ushr-int/lit8 v16, v10, 0x12

    and-int/lit8 v16, v16, 0x3f

    aget-char v16, v3, v16

    aput-char v16, v14, v13

    add-int/lit8 v13, v15, 0x1

    ushr-int/lit8 v16, v10, 0xc

    and-int/lit8 v16, v16, 0x3f

    .line 82
    aget-char v16, v3, v16

    aput-char v16, v14, v15

    add-int/lit8 v15, v13, 0x1

    ushr-int/lit8 v16, v10, 0x6

    and-int/lit8 v16, v16, 0x3f

    .line 83
    aget-char v16, v3, v16

    aput-char v16, v14, v13

    add-int/lit8 v13, v15, 0x1

    and-int/lit8 v10, v10, 0x3f

    .line 84
    aget-char v10, v3, v10

    aput-char v10, v14, v15

    move v10, v11

    goto :goto_1ac

    :cond_1f0
    sub-int/2addr v2, v5

    if-lez v2, :cond_228

    .line 85
    aget-byte v5, v0, v5

    and-int/lit16 v5, v5, 0xff

    shl-int/lit8 v5, v5, 0xa

    if-ne v2, v9, :cond_201

    aget-byte v0, v0, v7

    and-int/lit16 v0, v0, 0xff

    shl-int/lit8 v6, v0, 0x2

    :cond_201
    or-int v0, v5, v6

    .line 86
    iget-object v5, v1, Lcom/alibaba/fastjson/serializer/y0;->a:[C

    add-int/lit8 v6, v8, -0x5

    shr-int/lit8 v7, v0, 0xc

    aget-char v7, v3, v7

    aput-char v7, v5, v6

    add-int/lit8 v6, v8, -0x4

    ushr-int/lit8 v7, v0, 0x6

    and-int/lit8 v7, v7, 0x3f

    .line 87
    aget-char v7, v3, v7

    aput-char v7, v5, v6

    add-int/lit8 v6, v8, -0x3

    if-ne v2, v9, :cond_220

    and-int/lit8 v0, v0, 0x3f

    .line 88
    aget-char v0, v3, v0

    goto :goto_222

    :cond_220
    const/16 v0, 0x3d

    :goto_222
    aput-char v0, v5, v6

    add-int/lit8 v0, v8, -0x2

    .line 89
    aput-char v12, v5, v0

    .line 90
    :cond_228
    iget-object v0, v1, Lcom/alibaba/fastjson/serializer/y0;->a:[C

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

    aput-char v4, v0, v8

    :goto_22e
    return-void

    .line 91
    :cond_22f
    check-cast v0, [C

    .line 92
    new-instance v2, Ljava/lang/String;

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

    invoke-virtual {v1, v2}, Lcom/alibaba/fastjson/serializer/y0;->U(Ljava/lang/String;)V

    return-void
.end method