Strings.smali
.class public final Lorg/spongycastle/util/Strings;
.super Ljava/lang/Object;
.source "Strings.java"
# static fields
.field private static LINE_SEPARATOR:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 2
.prologue
.line 22
:try_start_0
new-instance v0, Lorg/spongycastle/util/Strings$1;
invoke-direct {v0}, Lorg/spongycastle/util/Strings$1;-><init>()V
invoke-static {v0}, Ljava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
sput-object v0, Lorg/spongycastle/util/Strings;->LINE_SEPARATOR:Ljava/lang/String;
:try_end_d
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_d} :catch_e
.line 44
:goto_d
return-void
:catch_e
move-exception v0
.line 37
:try_start_f
const-string v0, "%n"
const/4 v1, 0x0
new-array v1, v1, [Ljava/lang/Object;
invoke-static {v0, v1}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
sput-object v0, Lorg/spongycastle/util/Strings;->LINE_SEPARATOR:Ljava/lang/String;
:try_end_1a
.catch Ljava/lang/Exception; {:try_start_f .. :try_end_1a} :catch_1b
goto :goto_d
.line 41
:catch_1b
move-exception v0
const-string v0, "\n"
sput-object v0, Lorg/spongycastle/util/Strings;->LINE_SEPARATOR:Ljava/lang/String;
goto :goto_d
.end method
.method public constructor <init>()V
.registers 1
.prologue
.line 14
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static asCharArray([B)[C
.registers 4
.prologue
.line 310
array-length v0, p0
new-array v1, v0, [C
.line 312
const/4 v0, 0x0
:goto_4
array-length v2, v1
if-eq v0, v2, :cond_11
.line 314
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xff
int-to-char v2, v2
aput-char v2, v1, v0
.line 312
add-int/lit8 v0, v0, 0x1
goto :goto_4
.line 317
:cond_11
return-object v1
.end method
.method public static fromByteArray([B)Ljava/lang/String;
.registers 3
.prologue
.line 299
new-instance v0, Ljava/lang/String;
invoke-static {p0}, Lorg/spongycastle/util/Strings;->asCharArray([B)[C
move-result-object v1
invoke-direct {v0, v1}, Ljava/lang/String;-><init>([C)V
return-object v0
.end method
.method public static fromUTF8ByteArray([B)Ljava/lang/String;
.registers 10
.prologue
const/16 v8, 0xf0
const/16 v7, 0xe0
const/16 v6, 0xc0
const/4 v1, 0x0
.line 48
move v0, v1
move v2, v1
.line 51
:goto_9
array-length v3, p0
if-ge v2, v3, :cond_2e
.line 53
add-int/lit8 v0, v0, 0x1
.line 54
aget-byte v3, p0, v2
and-int/lit16 v3, v3, 0xf0
if-ne v3, v8, :cond_19
.line 57
add-int/lit8 v0, v0, 0x1
.line 58
add-int/lit8 v2, v2, 0x4
goto :goto_9
.line 60
:cond_19
aget-byte v3, p0, v2
and-int/lit16 v3, v3, 0xe0
if-ne v3, v7, :cond_22
.line 62
add-int/lit8 v2, v2, 0x3
goto :goto_9
.line 64
:cond_22
aget-byte v3, p0, v2
and-int/lit16 v3, v3, 0xc0
if-ne v3, v6, :cond_2b
.line 66
add-int/lit8 v2, v2, 0x2
goto :goto_9
.line 70
:cond_2b
add-int/lit8 v2, v2, 0x1
goto :goto_9
.line 74
:cond_2e
new-array v4, v0, [C
move v0, v1
.line 79
:goto_31
array-length v2, p0
if-ge v0, v2, :cond_d1
.line 83
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xf0
if-ne v2, v8, :cond_75
.line 85
aget-byte v2, p0, v0
and-int/lit8 v2, v2, 0x3
shl-int/lit8 v2, v2, 0x12
add-int/lit8 v3, v0, 0x1
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
shl-int/lit8 v3, v3, 0xc
or-int/2addr v2, v3
add-int/lit8 v3, v0, 0x2
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
shl-int/lit8 v3, v3, 0x6
or-int/2addr v2, v3
add-int/lit8 v3, v0, 0x3
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
or-int/2addr v2, v3
.line 86
const/high16 v3, 0x10000
sub-int/2addr v2, v3
.line 87
const v3, 0xd800
shr-int/lit8 v5, v2, 0xa
or-int/2addr v3, v5
int-to-char v5, v3
.line 88
const v3, 0xdc00
and-int/lit16 v2, v2, 0x3ff
or-int/2addr v2, v3
int-to-char v2, v2
.line 89
add-int/lit8 v3, v1, 0x1
aput-char v5, v4, v1
.line 91
add-int/lit8 v0, v0, 0x4
.line 115
:goto_70
add-int/lit8 v1, v3, 0x1
aput-char v2, v4, v3
goto :goto_31
.line 93
:cond_75
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xe0
if-ne v2, v7, :cond_96
.line 95
aget-byte v2, p0, v0
and-int/lit8 v2, v2, 0xf
shl-int/lit8 v2, v2, 0xc
add-int/lit8 v3, v0, 0x1
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
shl-int/lit8 v3, v3, 0x6
or-int/2addr v2, v3
add-int/lit8 v3, v0, 0x2
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
or-int/2addr v2, v3
int-to-char v2, v2
.line 97
add-int/lit8 v0, v0, 0x3
move v3, v1
goto :goto_70
.line 99
:cond_96
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xd0
const/16 v3, 0xd0
if-ne v2, v3, :cond_b0
.line 101
aget-byte v2, p0, v0
and-int/lit8 v2, v2, 0x1f
shl-int/lit8 v2, v2, 0x6
add-int/lit8 v3, v0, 0x1
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
or-int/2addr v2, v3
int-to-char v2, v2
.line 102
add-int/lit8 v0, v0, 0x2
move v3, v1
goto :goto_70
.line 104
:cond_b0
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xc0
if-ne v2, v6, :cond_c8
.line 106
aget-byte v2, p0, v0
and-int/lit8 v2, v2, 0x1f
shl-int/lit8 v2, v2, 0x6
add-int/lit8 v3, v0, 0x1
aget-byte v3, p0, v3
and-int/lit8 v3, v3, 0x3f
or-int/2addr v2, v3
int-to-char v2, v2
.line 107
add-int/lit8 v0, v0, 0x2
move v3, v1
goto :goto_70
.line 111
:cond_c8
aget-byte v2, p0, v0
and-int/lit16 v2, v2, 0xff
int-to-char v2, v2
.line 112
add-int/lit8 v0, v0, 0x1
move v3, v1
goto :goto_70
.line 118
:cond_d1
new-instance v0, Ljava/lang/String;
invoke-direct {v0, v4}, Ljava/lang/String;-><init>([C)V
return-object v0
.end method
.method public static lineSeparator()Ljava/lang/String;
.registers 1
.prologue
.line 358
sget-object v0, Lorg/spongycastle/util/Strings;->LINE_SEPARATOR:Ljava/lang/String;
return-object v0
.end method
.method public static newList()Lorg/spongycastle/util/StringList;
.registers 2
.prologue
.line 353
new-instance v0, Lorg/spongycastle/util/Strings$StringListImpl;
const/4 v1, 0x0
invoke-direct {v0, v1}, Lorg/spongycastle/util/Strings$StringListImpl;-><init>(Lorg/spongycastle/util/Strings$1;)V
return-object v0
.end method
.method public static split(Ljava/lang/String;C)[Ljava/lang/String;
.registers 7
.prologue
const/4 v0, 0x0
.line 322
new-instance v2, Ljava/util/Vector;
invoke-direct {v2}, Ljava/util/Vector;-><init>()V
.line 323
const/4 v1, 0x1
.line 326
:goto_7
if-eqz v1, :cond_22
.line 328
invoke-virtual {p0, p1}, Ljava/lang/String;->indexOf(I)I
move-result v3
.line 329
if-lez v3, :cond_1d
.line 331
invoke-virtual {p0, v0, v3}, Ljava/lang/String;->substring(II)Ljava/lang/String;
move-result-object v4
.line 332
invoke-virtual {v2, v4}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V
.line 333
add-int/lit8 v3, v3, 0x1
invoke-virtual {p0, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object p0
goto :goto_7
.line 338
:cond_1d
invoke-virtual {v2, p0}, Ljava/util/Vector;->addElement(Ljava/lang/Object;)V
move v1, v0
.line 340
goto :goto_7
.line 342
:cond_22
invoke-virtual {v2}, Ljava/util/Vector;->size()I
move-result v1
new-array v3, v1, [Ljava/lang/String;
move v1, v0
.line 344
:goto_29
array-length v0, v3
if-eq v1, v0, :cond_38
.line 346
invoke-virtual {v2, v1}, Ljava/util/Vector;->elementAt(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
aput-object v0, v3, v1
.line 344
add-int/lit8 v0, v1, 0x1
move v1, v0
goto :goto_29
.line 348
:cond_38
return-object v3
.end method
.method public static toByteArray(Ljava/lang/String;[BI)I
.registers 7
.prologue
.line 282
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v1
.line 283
const/4 v0, 0x0
:goto_5
if-ge v0, v1, :cond_13
.line 285
invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C
move-result v2
.line 286
add-int v3, p2, v0
int-to-byte v2, v2
aput-byte v2, p1, v3
.line 283
add-int/lit8 v0, v0, 0x1
goto :goto_5
.line 288
:cond_13
return v1
.end method
.method public static toByteArray(Ljava/lang/String;)[B
.registers 4
.prologue
.line 268
invoke-virtual {p0}, Ljava/lang/String;->length()I
move-result v0
new-array v1, v0, [B
.line 270
const/4 v0, 0x0
:goto_7
array-length v2, v1
if-eq v0, v2, :cond_14
.line 272
invoke-virtual {p0, v0}, Ljava/lang/String;->charAt(I)C
move-result v2
.line 274
int-to-byte v2, v2
aput-byte v2, v1, v0
.line 270
add-int/lit8 v0, v0, 0x1
goto :goto_7
.line 277
:cond_14
return-object v1
.end method
.method public static toByteArray([C)[B
.registers 4
.prologue
.line 256
array-length v0, p0
new-array v1, v0, [B
.line 258
const/4 v0, 0x0
:goto_4
array-length v2, v1
if-eq v0, v2, :cond_f
.line 260
aget-char v2, p0, v0
int-to-byte v2, v2
aput-byte v2, v1, v0
.line 258
add-int/lit8 v0, v0, 0x1
goto :goto_4
.line 263
:cond_f
return-object v1
.end method
.method public static toLowerCase(Ljava/lang/String;)Ljava/lang/String;
.registers 6
.prologue
const/4 v0, 0x0
.line 233
.line 234
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object v2
move v1, v0
.line 236
:goto_6
array-length v3, v2
if-eq v0, v3, :cond_1e
.line 238
aget-char v3, v2, v0
.line 239
const/16 v4, 0x41
if-gt v4, v3, :cond_1b
const/16 v4, 0x5a
if-lt v4, v3, :cond_1b
.line 241
const/4 v1, 0x1
.line 242
add-int/lit8 v3, v3, -0x41
add-int/lit8 v3, v3, 0x61
int-to-char v3, v3
aput-char v3, v2, v0
.line 236
:cond_1b
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 246
:cond_1e
if-eqz v1, :cond_25
.line 248
new-instance p0, Ljava/lang/String;
invoke-direct {p0, v2}, Ljava/lang/String;-><init>([C)V
.line 251
:cond_25
return-object p0
.end method
.method public static toUTF8ByteArray([CLjava/io/OutputStream;)V
.registers 6
.prologue
.line 146
const/4 v0, 0x0
.line 148
:goto_1
array-length v1, p0
if-ge v0, v1, :cond_8e
.line 150
aget-char v1, p0, v0
.line 152
const/16 v2, 0x80
if-ge v1, v2, :cond_10
.line 154
invoke-virtual {p1, v1}, Ljava/io/OutputStream;->write(I)V
.line 192
:goto_d
add-int/lit8 v0, v0, 0x1
.line 193
goto :goto_1
.line 156
:cond_10
const/16 v2, 0x800
if-ge v1, v2, :cond_23
.line 158
shr-int/lit8 v2, v1, 0x6
or-int/lit16 v2, v2, 0xc0
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 159
and-int/lit8 v1, v1, 0x3f
or-int/lit16 v1, v1, 0x80
invoke-virtual {p1, v1}, Ljava/io/OutputStream;->write(I)V
goto :goto_d
.line 162
:cond_23
const v2, 0xd800
if-lt v1, v2, :cond_76
const v2, 0xdfff
if-gt v1, v2, :cond_76
.line 166
add-int/lit8 v2, v0, 0x1
array-length v3, p0
if-lt v2, v3, :cond_3a
.line 168
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "invalid UTF-16 codepoint"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 171
:cond_3a
add-int/lit8 v0, v0, 0x1
aget-char v2, p0, v0
.line 175
const v3, 0xdbff
if-le v1, v3, :cond_4b
.line 177
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "invalid UTF-16 codepoint"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.line 179
:cond_4b
and-int/lit16 v1, v1, 0x3ff
shl-int/lit8 v1, v1, 0xa
and-int/lit16 v2, v2, 0x3ff
or-int/2addr v1, v2
const/high16 v2, 0x10000
add-int/2addr v1, v2
.line 180
shr-int/lit8 v2, v1, 0x12
or-int/lit16 v2, v2, 0xf0
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 181
shr-int/lit8 v2, v1, 0xc
and-int/lit8 v2, v2, 0x3f
or-int/lit16 v2, v2, 0x80
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 182
shr-int/lit8 v2, v1, 0x6
and-int/lit8 v2, v2, 0x3f
or-int/lit16 v2, v2, 0x80
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 183
and-int/lit8 v1, v1, 0x3f
or-int/lit16 v1, v1, 0x80
invoke-virtual {p1, v1}, Ljava/io/OutputStream;->write(I)V
goto :goto_d
.line 187
:cond_76
shr-int/lit8 v2, v1, 0xc
or-int/lit16 v2, v2, 0xe0
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 188
shr-int/lit8 v2, v1, 0x6
and-int/lit8 v2, v2, 0x3f
or-int/lit16 v2, v2, 0x80
invoke-virtual {p1, v2}, Ljava/io/OutputStream;->write(I)V
.line 189
and-int/lit8 v1, v1, 0x3f
or-int/lit16 v1, v1, 0x80
invoke-virtual {p1, v1}, Ljava/io/OutputStream;->write(I)V
goto :goto_d
.line 194
:cond_8e
return-void
.end method
.method public static toUTF8ByteArray(Ljava/lang/String;)[B
.registers 2
.prologue
.line 123
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object v0
invoke-static {v0}, Lorg/spongycastle/util/Strings;->toUTF8ByteArray([C)[B
move-result-object v0
return-object v0
.end method
.method public static toUTF8ByteArray([C)[B
.registers 3
.prologue
.line 128
new-instance v0, Ljava/io/ByteArrayOutputStream;
invoke-direct {v0}, Ljava/io/ByteArrayOutputStream;-><init>()V
.line 132
:try_start_5
invoke-static {p0, v0}, Lorg/spongycastle/util/Strings;->toUTF8ByteArray([CLjava/io/OutputStream;)V
:try_end_8
.catch Ljava/io/IOException; {:try_start_5 .. :try_end_8} :catch_d
.line 139
invoke-virtual {v0}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
move-result-object v0
return-object v0
.line 136
:catch_d
move-exception v0
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "cannot encode string to byte array!"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public static toUpperCase(Ljava/lang/String;)Ljava/lang/String;
.registers 6
.prologue
const/4 v0, 0x0
.line 204
.line 205
invoke-virtual {p0}, Ljava/lang/String;->toCharArray()[C
move-result-object v2
move v1, v0
.line 207
:goto_6
array-length v3, v2
if-eq v0, v3, :cond_1e
.line 209
aget-char v3, v2, v0
.line 210
const/16 v4, 0x61
if-gt v4, v3, :cond_1b
const/16 v4, 0x7a
if-lt v4, v3, :cond_1b
.line 212
const/4 v1, 0x1
.line 213
add-int/lit8 v3, v3, -0x61
add-int/lit8 v3, v3, 0x41
int-to-char v3, v3
aput-char v3, v2, v0
.line 207
:cond_1b
add-int/lit8 v0, v0, 0x1
goto :goto_6
.line 217
:cond_1e
if-eqz v1, :cond_25
.line 219
new-instance p0, Ljava/lang/String;
invoke-direct {p0, v2}, Ljava/lang/String;-><init>([C)V
.line 222
:cond_25
return-object p0
.end method