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