RC4.smali

.class Lcom/baidu/netdisk/sdk/RC4;
.super Ljava/lang/Object;


# static fields
.field private static a:Ljava/lang/String;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    const-string v0, ""

    sput-object v0, Lcom/baidu/netdisk/sdk/RC4;->a:Ljava/lang/String;

    const-string v0, "BDRC4_V1_1"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    return-void
.end method

.method constructor <init>()V
    .registers 1

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private a()Ljava/lang/String;
    .registers 2

    sget-object v0, Lcom/baidu/netdisk/sdk/RC4;->a:Ljava/lang/String;

    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v0

    if-eqz v0, :cond_e

    invoke-direct {p0}, Lcom/baidu/netdisk/sdk/RC4;->convertToRC4Key()Ljava/lang/String;

    move-result-object v0

    sput-object v0, Lcom/baidu/netdisk/sdk/RC4;->a:Ljava/lang/String;

    :cond_e
    sget-object v0, Lcom/baidu/netdisk/sdk/RC4;->a:Ljava/lang/String;

    return-object v0
.end method

.method private native convertToRC4Key()Ljava/lang/String;
.end method


# virtual methods
.method final a(Ljava/lang/String;)[B
    .registers 10

    const/16 v7, 0x100

    const/4 v0, 0x0

    invoke-direct {p0}, Lcom/baidu/netdisk/sdk/RC4;->a()Ljava/lang/String;

    move-result-object v2

    new-array v3, v7, [I

    new-array v4, v7, [B

    move v1, v0

    :goto_c
    if-ge v1, v7, :cond_13

    aput v1, v3, v1

    add-int/lit8 v1, v1, 0x1

    goto :goto_c

    :cond_13
    move v1, v0

    :goto_14
    if-ge v1, v7, :cond_27

    invoke-virtual {v2}, Ljava/lang/String;->length()I

    move-result v5

    rem-int v5, v1, v5

    invoke-virtual {v2, v5}, Ljava/lang/String;->charAt(I)C

    move-result v5

    int-to-byte v5, v5

    aput-byte v5, v4, v1

    add-int/lit8 v1, v1, 0x1

    int-to-short v1, v1

    goto :goto_14

    :cond_27
    move v1, v0

    move v2, v0

    :goto_29
    if-ge v1, v7, :cond_3e

    aget v5, v3, v1

    add-int/2addr v2, v5

    aget-byte v5, v4, v1

    add-int/2addr v2, v5

    rem-int/lit16 v2, v2, 0x100

    aget v5, v3, v1

    aget v6, v3, v2

    aput v6, v3, v1

    aput v5, v3, v2

    add-int/lit8 v1, v1, 0x1

    goto :goto_29

    :cond_3e
    invoke-virtual {p1}, Ljava/lang/String;->toCharArray()[C

    move-result-object v4

    array-length v1, v4

    new-array v5, v1, [B

    move v1, v0

    move v2, v0

    :goto_47
    array-length v6, v4

    if-ge v2, v6, :cond_70

    add-int/lit8 v0, v0, 0x1

    rem-int/lit16 v0, v0, 0x100

    aget v6, v3, v0

    add-int/2addr v1, v6

    rem-int/lit16 v1, v1, 0x100

    aget v6, v3, v0

    aget v7, v3, v1

    aput v7, v3, v0

    aput v6, v3, v1

    aget v6, v3, v0

    aget v7, v3, v1

    rem-int/lit16 v7, v7, 0x100

    add-int/2addr v6, v7

    rem-int/lit16 v6, v6, 0x100

    aget v6, v3, v6

    int-to-char v6, v6

    aget-char v7, v4, v2

    xor-int/2addr v6, v7

    int-to-byte v6, v6

    aput-byte v6, v5, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_47

    :cond_70
    return-object v5
.end method

.method public final a([B)[B
    .registers 10

    const/16 v7, 0x100

    const/4 v0, 0x0

    invoke-direct {p0}, Lcom/baidu/netdisk/sdk/RC4;->a()Ljava/lang/String;

    move-result-object v2

    new-array v3, v7, [I

    new-array v4, v7, [B

    move v1, v0

    :goto_c
    if-ge v1, v7, :cond_13

    aput v1, v3, v1

    add-int/lit8 v1, v1, 0x1

    goto :goto_c

    :cond_13
    move v1, v0

    :goto_14
    if-ge v1, v7, :cond_27

    invoke-virtual {v2}, Ljava/lang/String;->length()I

    move-result v5

    rem-int v5, v1, v5

    invoke-virtual {v2, v5}, Ljava/lang/String;->charAt(I)C

    move-result v5

    int-to-byte v5, v5

    aput-byte v5, v4, v1

    add-int/lit8 v1, v1, 0x1

    int-to-short v1, v1

    goto :goto_14

    :cond_27
    move v1, v0

    move v2, v0

    :goto_29
    if-ge v1, v7, :cond_3e

    aget v5, v3, v1

    add-int/2addr v2, v5

    aget-byte v5, v4, v1

    add-int/2addr v2, v5

    rem-int/lit16 v2, v2, 0x100

    aget v5, v3, v1

    aget v6, v3, v2

    aput v6, v3, v1

    aput v5, v3, v2

    add-int/lit8 v1, v1, 0x1

    goto :goto_29

    :cond_3e
    array-length v1, p1

    new-array v4, v1, [B

    move v1, v0

    move v2, v0

    :goto_43
    array-length v5, p1

    if-ge v2, v5, :cond_6c

    add-int/lit8 v0, v0, 0x1

    rem-int/lit16 v0, v0, 0x100

    aget v5, v3, v0

    add-int/2addr v1, v5

    rem-int/lit16 v1, v1, 0x100

    aget v5, v3, v0

    aget v6, v3, v1

    aput v6, v3, v0

    aput v5, v3, v1

    aget v5, v3, v0

    aget v6, v3, v1

    rem-int/lit16 v6, v6, 0x100

    add-int/2addr v5, v6

    rem-int/lit16 v5, v5, 0x100

    aget v5, v3, v5

    int-to-char v5, v5

    aget-byte v6, p1, v2

    xor-int/2addr v5, v6

    int-to-byte v5, v5

    aput-byte v5, v4, v2

    add-int/lit8 v2, v2, 0x1

    goto :goto_43

    :cond_6c
    return-object v4
.end method