TEACrypt.smali
.class public Lsg/bigo/svcapi/util/TEACrypt;
.super Ljava/lang/Object;
.source "SourceFile"
# direct methods
.method public constructor <init>()V
.registers 1
.line 6
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method private static decrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;[II)V
.registers 13
const/4 v0, 0x0
.line 80
aget v1, p2, v0
const/4 v2, 0x1
aget v2, p2, v2
const/4 v3, 0x2
aget v3, p2, v3
const/4 v4, 0x3
aget p2, p2, v4
const v4, -0x61c88647
const/16 v5, 0x20
if-ne p3, v5, :cond_17
const v5, -0x3910c8e0
goto :goto_21
:cond_17
const/16 v5, 0x10
if-ne p3, v5, :cond_1f
const v5, -0x1c886470
goto :goto_21
:cond_1f
mul-int v5, p3, v4
.line 90
:goto_21
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->getInt()I
move-result v6
.line 91
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->getInt()I
move-result p0
:goto_29
if-ge v0, p3, :cond_45
shl-int/lit8 v7, v6, 0x4
add-int/2addr v7, v3
add-int v8, v6, v5
xor-int/2addr v7, v8
ushr-int/lit8 v8, v6, 0x5
add-int/2addr v8, p2
xor-int/2addr v7, v8
sub-int/2addr p0, v7
shl-int/lit8 v7, p0, 0x4
add-int/2addr v7, v1
add-int v8, p0, v5
xor-int/2addr v7, v8
ushr-int/lit8 v8, p0, 0x5
add-int/2addr v8, v2
xor-int/2addr v7, v8
sub-int/2addr v6, v7
sub-int/2addr v5, v4
add-int/lit8 v0, v0, 0x1
goto :goto_29
.line 99
:cond_45
invoke-virtual {p1, v6}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 100
invoke-virtual {p1, p0}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
return-void
.end method
.method public static decrypt([B[II)[B
.registers 7
const/4 v0, 0x0
if-eqz p0, :cond_3f
if-eqz p1, :cond_3f
.line 34
array-length v1, p1
const/4 v2, 0x4
if-ne v1, v2, :cond_3f
rem-int/lit8 v1, p2, 0x8
if-eqz v1, :cond_e
goto :goto_3f
.line 37
:cond_e
array-length v1, p0
.line 38
rem-int/lit8 v2, v1, 0x8
if-eqz v2, :cond_19
.line 39
array-length v2, p0
rem-int/lit8 v2, v2, 0x8
rsub-int/lit8 v2, v2, 0x8
add-int/2addr v1, v2
.line 42
:cond_19
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v2
.line 43
sget-object v3, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {v2, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
.line 44
invoke-virtual {v2, p0}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 45
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 47
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v1
.line 48
sget-object v3, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {v1, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
.line 50
:goto_31
array-length v3, p0
if-ge v0, v3, :cond_3a
.line 51
invoke-static {v2, v1, p1, p2}, Lsg/bigo/svcapi/util/TEACrypt;->decrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;[II)V
add-int/lit8 v0, v0, 0x8
goto :goto_31
.line 54
:cond_3a
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object p0
return-object p0
:cond_3f
:goto_3f
new-array p0, v0, [B
return-object p0
.end method
.method private static encrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;[II)V
.registers 12
const/4 v0, 0x0
.line 60
aget v1, p2, v0
const/4 v2, 0x1
aget v2, p2, v2
const/4 v3, 0x2
aget v3, p2, v3
const/4 v4, 0x3
aget p2, p2, v4
.line 62
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->getInt()I
move-result v4
.line 63
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->getInt()I
move-result p0
move v5, v4
const/4 v4, 0x0
:goto_16
if-ge v0, p3, :cond_35
const v6, -0x61c88647
add-int/2addr v4, v6
shl-int/lit8 v6, p0, 0x4
add-int/2addr v6, v1
add-int v7, p0, v4
xor-int/2addr v6, v7
ushr-int/lit8 v7, p0, 0x5
add-int/2addr v7, v2
xor-int/2addr v6, v7
add-int/2addr v5, v6
shl-int/lit8 v6, v5, 0x4
add-int/2addr v6, v3
add-int v7, v5, v4
xor-int/2addr v6, v7
ushr-int/lit8 v7, v5, 0x5
add-int/2addr v7, p2
xor-int/2addr v6, v7
add-int/2addr p0, v6
add-int/lit8 v0, v0, 0x1
goto :goto_16
.line 71
:cond_35
invoke-virtual {p1, v5}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 72
invoke-virtual {p1, p0}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
return-void
.end method
.method public static encrypt([B[II)[B
.registers 7
const/4 v0, 0x0
if-eqz p0, :cond_3e
if-eqz p1, :cond_3e
.line 9
array-length v1, p1
const/4 v2, 0x4
if-ne v1, v2, :cond_3e
rem-int/lit8 v1, p2, 0x8
if-eqz v1, :cond_e
goto :goto_3e
.line 13
:cond_e
array-length v1, p0
.line 14
rem-int/lit8 v2, v1, 0x8
if-eqz v2, :cond_19
.line 15
array-length v2, p0
rem-int/lit8 v2, v2, 0x8
rsub-int/lit8 v2, v2, 0x8
add-int/2addr v1, v2
.line 18
:cond_19
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v2
.line 19
sget-object v3, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {v2, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
.line 20
invoke-virtual {v2, p0}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 21
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 23
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object p0
.line 24
sget-object v3, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {p0, v3}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
:goto_31
if-ge v0, v1, :cond_39
.line 27
invoke-static {v2, p0, p1, p2}, Lsg/bigo/svcapi/util/TEACrypt;->encrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;[II)V
add-int/lit8 v0, v0, 0x8
goto :goto_31
.line 30
:cond_39
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object p0
return-object p0
:cond_3e
:goto_3e
new-array p0, v0, [B
return-object p0
.end method