UUID22.smali
.class public Lcn/rongcloud/rtc/utils/UUID22;
.super Ljava/lang/Object;
.source "UUID22.java"
# static fields
.field private static alphabet:[C
# direct methods
.method static constructor <clinit>()V
.registers 1
const-string v0, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="
.line 1
invoke-virtual {v0}, Ljava/lang/String;->toCharArray()[C
move-result-object v0
sput-object v0, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private encode([B)[C
.registers 12
.line 1
array-length v0, p1
add-int/lit8 v0, v0, 0x2
div-int/lit8 v0, v0, 0x3
mul-int/lit8 v0, v0, 0x4
new-array v0, v0, [C
const/4 v1, 0x0
const/4 v2, 0x0
const/4 v3, 0x0
.line 2
:goto_c
array-length v4, p1
if-ge v2, v4, :cond_6b
.line 3
aget-byte v4, p1, v2
and-int/lit16 v4, v4, 0xff
shl-int/lit8 v4, v4, 0x8
add-int/lit8 v5, v2, 0x1
.line 4
array-length v6, p1
const/4 v7, 0x1
if-ge v5, v6, :cond_22
.line 5
aget-byte v5, p1, v5
and-int/lit16 v5, v5, 0xff
or-int/2addr v4, v5
const/4 v5, 0x1
goto :goto_23
:cond_22
const/4 v5, 0x0
:goto_23
shl-int/lit8 v4, v4, 0x8
add-int/lit8 v6, v2, 0x2
.line 6
array-length v8, p1
if-ge v6, v8, :cond_30
.line 7
aget-byte v6, p1, v6
and-int/lit16 v6, v6, 0xff
or-int/2addr v4, v6
goto :goto_31
:cond_30
const/4 v7, 0x0
:goto_31
add-int/lit8 v6, v3, 0x3
.line 8
sget-object v8, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
const/16 v9, 0x40
if-eqz v7, :cond_3c
and-int/lit8 v7, v4, 0x3f
goto :goto_3e
:cond_3c
const/16 v7, 0x40
:goto_3e
aget-char v7, v8, v7
aput-char v7, v0, v6
shr-int/lit8 v4, v4, 0x6
add-int/lit8 v6, v3, 0x2
.line 9
sget-object v7, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
if-eqz v5, :cond_4c
and-int/lit8 v9, v4, 0x3f
:cond_4c
aget-char v5, v7, v9
aput-char v5, v0, v6
shr-int/lit8 v4, v4, 0x6
add-int/lit8 v5, v3, 0x1
.line 10
sget-object v6, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
and-int/lit8 v7, v4, 0x3f
aget-char v7, v6, v7
aput-char v7, v0, v5
shr-int/lit8 v4, v4, 0x6
add-int/lit8 v5, v3, 0x0
and-int/lit8 v4, v4, 0x3f
.line 11
aget-char v4, v6, v4
aput-char v4, v0, v5
add-int/lit8 v2, v2, 0x3
add-int/lit8 v3, v3, 0x4
goto :goto_c
:cond_6b
return-object v0
.end method
.method public static getUUID22()Ljava/lang/String;
.registers 1
.line 1
invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID;
move-result-object v0
invoke-static {v0}, Lcn/rongcloud/rtc/utils/UUID22;->getUUID22(Ljava/util/UUID;)Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public static getUUID22(Ljava/util/UUID;)Ljava/lang/String;
.registers 19
.line 2
invoke-virtual/range {p0 .. p0}, Ljava/util/UUID;->getMostSignificantBits()J
move-result-wide v0
.line 3
invoke-virtual/range {p0 .. p0}, Ljava/util/UUID;->getLeastSignificantBits()J
move-result-wide v2
const/16 v4, 0x18
.line 4
new-array v4, v4, [C
const/16 v6, 0x8
const/4 v7, 0x0
const/16 v8, 0x8
const/16 v9, 0x8
const/4 v10, 0x0
:goto_14
const/16 v11, 0x10
if-ge v7, v11, :cond_bc
add-int/lit8 v11, v7, 0x3
mul-int/lit8 v12, v11, 0x8
const/16 v13, 0x40
rsub-int/lit8 v12, v12, 0x40
const/4 v14, 0x1
const/4 v15, 0x3
if-le v8, v15, :cond_28
const v15, 0xffffff
goto :goto_40
:cond_28
if-ltz v8, :cond_35
mul-int/lit8 v16, v8, 0x8
shl-int v16, v14, v16
add-int/lit8 v16, v16, -0x1
sub-int/2addr v15, v8
sub-int/2addr v9, v15
move/from16 v15, v16
goto :goto_40
:cond_35
if-le v9, v15, :cond_38
goto :goto_39
:cond_38
move v15, v9
:goto_39
mul-int/lit8 v15, v15, 0x8
shl-int v15, v14, v15
sub-int/2addr v15, v14
add-int/lit8 v9, v9, -0x3
:goto_40
if-lez v8, :cond_64
add-int/lit8 v8, v8, -0x3
if-gez v12, :cond_48
move-wide v13, v0
goto :goto_4d
:cond_48
ushr-long v16, v0, v12
int-to-long v13, v15
and-long v13, v16, v13
:goto_4d
long-to-int v14, v13
if-gez v8, :cond_62
.line 5
invoke-static {v12}, Ljava/lang/Math;->abs(I)I
move-result v13
shl-int v13, v14, v13
.line 6
invoke-static {v8}, Ljava/lang/Math;->abs(I)I
move-result v14
mul-int/lit8 v14, v14, 0x8
const/4 v15, 0x1
shl-int v14, v15, v14
add-int/lit8 v15, v14, -0x1
goto :goto_65
:cond_62
move v13, v14
goto :goto_65
:cond_64
const/4 v13, 0x0
:goto_65
if-gez v12, :cond_76
add-int/lit8 v12, v12, 0x40
int-to-long v13, v13
if-gez v12, :cond_6f
move-wide/from16 v16, v2
goto :goto_71
:cond_6f
ushr-long v16, v2, v12
:goto_71
int-to-long v5, v15
and-long v5, v16, v5
or-long/2addr v5, v13
long-to-int v13, v5
:cond_76
const/16 v5, 0xf
if-ne v7, v5, :cond_8d
add-int/lit8 v5, v10, 0x3
.line 7
sget-object v6, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
const/16 v7, 0x40
aget-char v14, v6, v7
aput-char v14, v4, v5
add-int/lit8 v5, v10, 0x2
.line 8
aget-char v6, v6, v7
aput-char v6, v4, v5
shl-int/lit8 v5, v13, 0x4
goto :goto_a3
:cond_8d
add-int/lit8 v5, v10, 0x3
.line 9
sget-object v6, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
and-int/lit8 v7, v13, 0x3f
aget-char v7, v6, v7
aput-char v7, v4, v5
shr-int/lit8 v5, v13, 0x6
add-int/lit8 v7, v10, 0x2
and-int/lit8 v13, v5, 0x3f
.line 10
aget-char v6, v6, v13
aput-char v6, v4, v7
shr-int/lit8 v5, v5, 0x6
:goto_a3
add-int/lit8 v6, v10, 0x1
.line 11
sget-object v7, Lcn/rongcloud/rtc/utils/UUID22;->alphabet:[C
and-int/lit8 v13, v5, 0x3f
aget-char v13, v7, v13
aput-char v13, v4, v6
shr-int/lit8 v5, v5, 0x6
and-int/lit8 v5, v5, 0x3f
.line 12
aget-char v5, v7, v5
aput-char v5, v4, v10
add-int/lit8 v10, v10, 0x4
move v7, v11
const/16 v6, 0x8
goto/16 :goto_14
.line 13
:cond_bc
new-instance v0, Ljava/lang/String;
const/16 v1, 0x16
const/4 v2, 0x0
invoke-direct {v0, v4, v2, v1}, Ljava/lang/String;-><init>([CII)V
return-object v0
.end method
.method public static main([Ljava/lang/String;)V
.registers 2
.line 1
sget-object p0, Ljava/lang/System;->out:Ljava/io/PrintStream;
invoke-static {}, Lcn/rongcloud/rtc/utils/UUID22;->getUUID22()Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
.method private toBytes()[B
.registers 13
.line 1
invoke-static {}, Ljava/util/UUID;->randomUUID()Ljava/util/UUID;
move-result-object v0
.line 2
invoke-virtual {v0}, Ljava/util/UUID;->getMostSignificantBits()J
move-result-wide v1
.line 3
invoke-virtual {v0}, Ljava/util/UUID;->getLeastSignificantBits()J
move-result-wide v3
const/16 v0, 0x10
.line 4
new-array v0, v0, [B
const/4 v5, 0x0
:goto_11
const/16 v6, 0x8
if-ge v5, v6, :cond_2e
rsub-int/lit8 v7, v5, 0x7
mul-int/lit8 v7, v7, 0x8
ushr-long v8, v1, v7
const-wide/16 v10, 0xff
and-long/2addr v8, v10
long-to-int v6, v8
int-to-byte v6, v6
.line 5
aput-byte v6, v0, v5
add-int/lit8 v6, v5, 0x8
ushr-long v7, v3, v7
and-long/2addr v7, v10
long-to-int v8, v7
int-to-byte v7, v8
.line 6
aput-byte v7, v0, v6
add-int/lit8 v5, v5, 0x1
goto :goto_11
:cond_2e
return-object v0
.end method
# virtual methods
.method public getUUID()Ljava/lang/String;
.registers 5
.line 1
invoke-direct {p0}, Lcn/rongcloud/rtc/utils/UUID22;->toBytes()[B
move-result-object v0
invoke-direct {p0, v0}, Lcn/rongcloud/rtc/utils/UUID22;->encode([B)[C
move-result-object v0
.line 2
sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
new-instance v2, Ljava/lang/String;
invoke-direct {v2, v0}, Ljava/lang/String;-><init>([C)V
invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
.line 3
new-instance v1, Ljava/lang/String;
array-length v2, v0
add-int/lit8 v2, v2, -0x2
const/4 v3, 0x0
invoke-direct {v1, v0, v3, v2}, Ljava/lang/String;-><init>([CII)V
return-object v1
.end method