IOUtils.smali
.class public Lcom/alibaba/fastjson/util/IOUtils;
.super Ljava/lang/Object;
.source "IOUtils.java"
# static fields
.field public static final ASCII_CHARS:[C
.field public static final DIGITS:[C
.field static final DigitOnes:[C
.field static final DigitTens:[C
.field static final digits:[C
.field public static final firstIdentifierFlags:[Z
.field public static final identifierFlags:[Z
.field public static final replaceChars:[C
.field static final sizeTable:[I
.field public static final specicalFlags_doubleQuotes:[B
.field public static final specicalFlags_singleQuotes:[B
# direct methods
.method static constructor <clinit>()V
.registers 18
.line 25
const/16 v0, 0x10
new-array v0, v0, [C
fill-array-data v0, :array_16c
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->DIGITS:[C
.line 28
const/16 v0, 0x100
new-array v1, v0, [Z
sput-object v1, Lcom/alibaba/fastjson/util/IOUtils;->firstIdentifierFlags:[Z
.line 30
const/4 v1, 0x0
.local v1, "c":C
:goto_10
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->firstIdentifierFlags:[Z
array-length v3, v2
const/16 v4, 0x5f
const/16 v5, 0x5a
const/16 v6, 0x61
const/16 v7, 0x41
const/4 v8, 0x1
if-ge v1, v3, :cond_3a
.line 31
if-lt v1, v7, :cond_25
if-gt v1, v5, :cond_25
.line 32
aput-boolean v8, v2, v1
goto :goto_36
.line 33
:cond_25
if-lt v1, v6, :cond_30
const/16 v2, 0x7a
if-gt v1, v2, :cond_30
.line 34
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->firstIdentifierFlags:[Z
aput-boolean v8, v2, v1
goto :goto_36
.line 35
:cond_30
if-ne v1, v4, :cond_36
.line 36
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->firstIdentifierFlags:[Z
aput-boolean v8, v2, v1
.line 30
:cond_36
:goto_36
add-int/lit8 v2, v1, 0x1
int-to-char v1, v2
goto :goto_10
.line 41
.end local v1 # "c":C
:cond_3a
new-array v1, v0, [Z
sput-object v1, Lcom/alibaba/fastjson/util/IOUtils;->identifierFlags:[Z
.line 44
const/4 v1, 0x0
.restart local v1 # "c":C
:goto_3f
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->identifierFlags:[Z
array-length v3, v2
if-ge v1, v3, :cond_6d
.line 45
if-lt v1, v7, :cond_4b
if-gt v1, v5, :cond_4b
.line 46
aput-boolean v8, v2, v1
goto :goto_69
.line 47
:cond_4b
if-lt v1, v6, :cond_56
const/16 v2, 0x7a
if-gt v1, v2, :cond_56
.line 48
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->identifierFlags:[Z
aput-boolean v8, v2, v1
goto :goto_69
.line 49
:cond_56
if-ne v1, v4, :cond_5d
.line 50
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->identifierFlags:[Z
aput-boolean v8, v2, v1
goto :goto_69
.line 51
:cond_5d
const/16 v2, 0x30
if-lt v1, v2, :cond_69
const/16 v2, 0x39
if-gt v1, v2, :cond_69
.line 52
sget-object v2, Lcom/alibaba/fastjson/util/IOUtils;->identifierFlags:[Z
aput-boolean v8, v2, v1
.line 44
:cond_69
:goto_69
add-int/lit8 v2, v1, 0x1
int-to-char v1, v2
goto :goto_3f
.line 57
.end local v1 # "c":C
:cond_6d
new-array v1, v0, [B
sput-object v1, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_doubleQuotes:[B
.line 58
new-array v0, v0, [B
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_singleQuotes:[B
.line 60
const/16 v2, 0x80
new-array v2, v2, [C
sput-object v2, Lcom/alibaba/fastjson/util/IOUtils;->replaceChars:[C
.line 62
const/4 v2, 0x0
const/4 v3, 0x4
aput-byte v3, v1, v2
.line 63
aput-byte v3, v1, v8
.line 64
const/4 v4, 0x2
aput-byte v3, v1, v4
.line 65
const/4 v5, 0x3
aput-byte v3, v1, v5
.line 66
aput-byte v3, v1, v3
.line 67
const/4 v6, 0x5
aput-byte v3, v1, v6
.line 68
const/4 v7, 0x6
aput-byte v3, v1, v7
.line 69
const/4 v9, 0x7
aput-byte v3, v1, v9
.line 70
const/16 v10, 0x8
aput-byte v8, v1, v10
.line 71
const/16 v11, 0x9
aput-byte v8, v1, v11
.line 72
const/16 v12, 0xa
aput-byte v8, v1, v12
.line 73
const/16 v13, 0xb
aput-byte v3, v1, v13
.line 74
const/16 v14, 0xc
aput-byte v8, v1, v14
.line 75
const/16 v15, 0xd
aput-byte v8, v1, v15
.line 76
const/16 v16, 0x22
aput-byte v8, v1, v16
.line 77
const/16 v17, 0x5c
aput-byte v8, v1, v17
.line 79
aput-byte v3, v0, v2
.line 80
aput-byte v3, v0, v8
.line 81
aput-byte v3, v0, v4
.line 82
aput-byte v3, v0, v5
.line 83
aput-byte v3, v0, v3
.line 84
aput-byte v3, v0, v6
.line 85
aput-byte v3, v0, v7
.line 86
aput-byte v3, v0, v9
.line 87
aput-byte v8, v0, v10
.line 88
aput-byte v8, v0, v11
.line 89
aput-byte v8, v0, v12
.line 90
aput-byte v3, v0, v13
.line 91
aput-byte v8, v0, v14
.line 92
aput-byte v8, v0, v15
.line 93
aput-byte v8, v0, v17
.line 94
const/16 v1, 0x27
aput-byte v8, v0, v1
.line 96
const/16 v0, 0xe
.local v0, "i":I
:goto_d6
const/16 v1, 0x1f
if-gt v0, v1, :cond_e7
.line 97
sget-object v1, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_doubleQuotes:[B
aput-byte v3, v1, v0
.line 98
sget-object v1, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_singleQuotes:[B
aput-byte v3, v1, v0
.line 96
add-int/lit8 v0, v0, 0x1
const/16 v1, 0x27
goto :goto_d6
.line 101
.end local v0 # "i":I
:cond_e7
const/16 v0, 0x7f
.restart local v0 # "i":I
:goto_e9
const/16 v1, 0xa0
if-gt v0, v1, :cond_f8
.line 102
sget-object v1, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_doubleQuotes:[B
aput-byte v3, v1, v0
.line 103
sget-object v1, Lcom/alibaba/fastjson/util/IOUtils;->specicalFlags_singleQuotes:[B
aput-byte v3, v1, v0
.line 101
add-int/lit8 v0, v0, 0x1
goto :goto_e9
.line 106
.end local v0 # "i":I
:cond_f8
sget-object v0, Lcom/alibaba/fastjson/util/IOUtils;->replaceChars:[C
const/16 v1, 0x30
aput-char v1, v0, v2
.line 107
const/16 v1, 0x31
aput-char v1, v0, v8
.line 108
const/16 v1, 0x32
aput-char v1, v0, v4
.line 109
const/16 v1, 0x33
aput-char v1, v0, v5
.line 110
const/16 v1, 0x34
aput-char v1, v0, v3
.line 111
const/16 v1, 0x35
aput-char v1, v0, v6
.line 112
const/16 v1, 0x36
aput-char v1, v0, v7
.line 113
const/16 v1, 0x37
aput-char v1, v0, v9
.line 114
const/16 v1, 0x62
aput-char v1, v0, v10
.line 115
const/16 v1, 0x74
aput-char v1, v0, v11
.line 116
const/16 v1, 0x6e
aput-char v1, v0, v12
.line 117
const/16 v1, 0x76
aput-char v1, v0, v13
.line 118
const/16 v1, 0x66
aput-char v1, v0, v14
.line 119
const/16 v1, 0x72
aput-char v1, v0, v15
.line 120
aput-char v16, v0, v16
.line 121
const/16 v1, 0x27
aput-char v1, v0, v1
.line 122
const/16 v1, 0x2f
const/16 v2, 0x2f
aput-char v2, v0, v1
.line 123
aput-char v17, v0, v17
.line 126
const/16 v0, 0x60
new-array v0, v0, [C
fill-array-data v0, :array_180
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->ASCII_CHARS:[C
.line 203
const/16 v0, 0x24
new-array v0, v0, [C
fill-array-data v0, :array_1e4
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->digits:[C
.line 206
const/16 v0, 0x64
new-array v0, v0, [C
fill-array-data v0, :array_20c
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->DigitTens:[C
.line 212
const/16 v0, 0x64
new-array v0, v0, [C
fill-array-data v0, :array_274
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->DigitOnes:[C
.line 218
new-array v0, v12, [I
fill-array-data v0, :array_2dc
sput-object v0, Lcom/alibaba/fastjson/util/IOUtils;->sizeTable:[I
return-void
:array_16c
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x41s
0x42s
0x43s
0x44s
0x45s
0x46s
.end array-data
:array_180
.array-data 2
0x30s
0x30s
0x30s
0x31s
0x30s
0x32s
0x30s
0x33s
0x30s
0x34s
0x30s
0x35s
0x30s
0x36s
0x30s
0x37s
0x30s
0x38s
0x30s
0x39s
0x30s
0x41s
0x30s
0x42s
0x30s
0x43s
0x30s
0x44s
0x30s
0x45s
0x30s
0x46s
0x31s
0x30s
0x31s
0x31s
0x31s
0x32s
0x31s
0x33s
0x31s
0x34s
0x31s
0x35s
0x31s
0x36s
0x31s
0x37s
0x31s
0x38s
0x31s
0x39s
0x31s
0x41s
0x31s
0x42s
0x31s
0x43s
0x31s
0x44s
0x31s
0x45s
0x31s
0x46s
0x32s
0x30s
0x32s
0x31s
0x32s
0x32s
0x32s
0x33s
0x32s
0x34s
0x32s
0x35s
0x32s
0x36s
0x32s
0x37s
0x32s
0x38s
0x32s
0x39s
0x32s
0x41s
0x32s
0x42s
0x32s
0x43s
0x32s
0x44s
0x32s
0x45s
0x32s
0x46s
.end array-data
:array_1e4
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x61s
0x62s
0x63s
0x64s
0x65s
0x66s
0x67s
0x68s
0x69s
0x6as
0x6bs
0x6cs
0x6ds
0x6es
0x6fs
0x70s
0x71s
0x72s
0x73s
0x74s
0x75s
0x76s
0x77s
0x78s
0x79s
0x7as
.end array-data
:array_20c
.array-data 2
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x30s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x31s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x32s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x33s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x34s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x35s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x36s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x37s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x38s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
0x39s
.end array-data
:array_274
.array-data 2
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
0x30s
0x31s
0x32s
0x33s
0x34s
0x35s
0x36s
0x37s
0x38s
0x39s
.end array-data
:array_2dc
.array-data 4
0x9
0x63
0x3e7
0x270f
0x1869f
0xf423f
0x98967f
0x5f5e0ff
0x3b9ac9ff
0x7fffffff
.end array-data
.end method
.method public constructor <init>()V
.registers 1
.line 23
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static close(Ljava/io/Closeable;)V
.registers 2
.param p0, "x" # Ljava/io/Closeable;
.line 134
if-eqz p0, :cond_7
.line 136
:try_start_2
invoke-interface {p0}, Ljava/io/Closeable;->close()V
:try_end_5
.catch Ljava/lang/Exception; {:try_start_2 .. :try_end_5} :catch_6
.line 139
goto :goto_7
.line 137
:catch_6
move-exception v0
.line 141
:cond_7
:goto_7
return-void
.end method
.method public static getChars(JI[C)V
.registers 12
.param p0, "i" # J
.param p2, "index" # I
.param p3, "buf" # [C
.line 156
move v0, p2
.line 157
.local v0, "charPos":I
const/4 v1, 0x0
.line 159
.local v1, "sign":C
const-wide/16 v2, 0x0
cmp-long v4, p0, v2
if-gez v4, :cond_b
.line 160
const/16 v1, 0x2d
.line 161
neg-long p0, p0
.line 165
:cond_b
:goto_b
const-wide/32 v2, 0x7fffffff
cmp-long v4, p0, v2
if-lez v4, :cond_36
.line 166
const-wide/16 v2, 0x64
div-long v2, p0, v2
.line 168
.local v2, "q":J
const/4 v4, 0x6
shl-long v4, v2, v4
const/4 v6, 0x5
shl-long v6, v2, v6
add-long/2addr v4, v6
const/4 v6, 0x2
shl-long v6, v2, v6
add-long/2addr v4, v6
sub-long v4, p0, v4
long-to-int v5, v4
.line 169
.local v5, "r":I
move-wide p0, v2
.line 170
add-int/lit8 v0, v0, -0x1
sget-object v4, Lcom/alibaba/fastjson/util/IOUtils;->DigitOnes:[C
aget-char v4, v4, v5
aput-char v4, p3, v0
.line 171
add-int/lit8 v0, v0, -0x1
sget-object v4, Lcom/alibaba/fastjson/util/IOUtils;->DigitTens:[C
aget-char v4, v4, v5
aput-char v4, p3, v0
goto :goto_b
.line 176
.end local v2 # "q":J
.end local v5 # "r":I
:cond_36
long-to-int v2, p0
.line 177
.local v2, "i2":I
:goto_37
const/high16 v3, 0x10000
if-lt v2, v3, :cond_59
.line 178
div-int/lit8 v3, v2, 0x64
.line 180
.local v3, "q2":I
shl-int/lit8 v4, v3, 0x6
shl-int/lit8 v5, v3, 0x5
add-int/2addr v4, v5
shl-int/lit8 v5, v3, 0x2
add-int/2addr v4, v5
sub-int v4, v2, v4
.line 181
.local v4, "r":I
move v2, v3
.line 182
add-int/lit8 v0, v0, -0x1
sget-object v5, Lcom/alibaba/fastjson/util/IOUtils;->DigitOnes:[C
aget-char v5, v5, v4
aput-char v5, p3, v0
.line 183
add-int/lit8 v0, v0, -0x1
sget-object v5, Lcom/alibaba/fastjson/util/IOUtils;->DigitTens:[C
aget-char v5, v5, v4
aput-char v5, p3, v0
goto :goto_37
.line 189
.end local v3 # "q2":I
.end local v4 # "r":I
:cond_59
const v3, 0xcccd
mul-int v3, v3, v2
ushr-int/lit8 v3, v3, 0x13
.line 190
.restart local v3 # "q2":I
shl-int/lit8 v4, v3, 0x3
shl-int/lit8 v5, v3, 0x1
add-int/2addr v4, v5
sub-int v4, v2, v4
.line 191
.restart local v4 # "r":I
add-int/lit8 v0, v0, -0x1
sget-object v5, Lcom/alibaba/fastjson/util/IOUtils;->digits:[C
aget-char v5, v5, v4
aput-char v5, p3, v0
.line 192
move v2, v3
.line 193
if-nez v2, :cond_59
.line 195
if-eqz v1, :cond_78
.line 196
add-int/lit8 v0, v0, -0x1
aput-char v1, p3, v0
.line 198
:cond_78
return-void
.end method
.method public static stringSize(I)I
.registers 3
.param p0, "x" # I
.line 222
const/4 v0, 0x0
.line 223
.local v0, "i":I
:goto_1
sget-object v1, Lcom/alibaba/fastjson/util/IOUtils;->sizeTable:[I
aget v1, v1, v0
if-gt p0, v1, :cond_a
.line 224
add-int/lit8 v1, v0, 0x1
return v1
.line 222
:cond_a
add-int/lit8 v0, v0, 0x1
goto :goto_1
.end method
.method public static stringSize(J)I
.registers 7
.param p0, "x" # J
.line 145
const-wide/16 v0, 0xa
.line 146
.local v0, "p":J
const/4 v2, 0x1
.local v2, "i":I
:goto_3
const/16 v3, 0x13
if-ge v2, v3, :cond_13
.line 147
cmp-long v3, p0, v0
if-gez v3, :cond_c
return v2
.line 148
:cond_c
const-wide/16 v3, 0xa
mul-long v0, v0, v3
.line 146
add-int/lit8 v2, v2, 0x1
goto :goto_3
.line 150
.end local v2 # "i":I
:cond_13
return v3
.end method