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