CharArrayKeyAnalyzer.smali

.class public Lorg/ardverk/collection/CharArrayKeyAnalyzer;
.super Ldxoptimizer/csk;

# interfaces
.implements Ljava/io/Serializable;


# annotations
.annotation system Ldalvik/annotation/Signature;
    value = {
        "Ldxoptimizer/csk",
        "<[C>;",
        "Ljava/io/Serializable;"
    }
.end annotation


# static fields
.field public static final BYTE:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

.field public static final CHAR:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

.field public static final INSTANCE:Lorg/ardverk/collection/CharArrayKeyAnalyzer;
    .annotation runtime Ljava/lang/Deprecated;
    .end annotation
.end field

.field private static final serialVersionUID:J = 0x97b6a3cd6ea3aa8L


# instance fields
.field private final msb:I

.field private final size:I


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

    new-instance v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    const/16 v1, 0x10

    invoke-direct {v0, v1}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;-><init>(I)V

    sput-object v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->CHAR:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    new-instance v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    const/16 v1, 0x8

    invoke-direct {v0, v1}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;-><init>(I)V

    sput-object v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->BYTE:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    sget-object v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->CHAR:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    sput-object v0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->INSTANCE:Lorg/ardverk/collection/CharArrayKeyAnalyzer;

    return-void
.end method

.method protected constructor <init>(I)V
    .registers 4

    const/4 v0, 0x1

    add-int/lit8 v1, p1, -0x1

    shl-int/2addr v0, v1

    invoke-direct {p0, p1, v0}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;-><init>(II)V

    return-void
.end method

.method protected constructor <init>(II)V
    .registers 3

    invoke-direct {p0}, Ldxoptimizer/csk;-><init>()V

    iput p1, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    iput p2, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->msb:I

    return-void
.end method

.method private mask(I)I
    .registers 3

    iget v0, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->msb:I

    ushr-int/2addr v0, p1

    return v0
.end method

.method private valueAt([CI)C
    .registers 6

    array-length v0, p1

    if-ge p2, v0, :cond_f

    aget-char v0, p1, p2

    iget v1, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    const/16 v2, 0x8

    if-ne v1, v2, :cond_e

    and-int/lit16 v0, v0, 0xff

    int-to-char v0, v0

    :cond_e
    :goto_e
    return v0

    :cond_f
    const/4 v0, 0x0

    goto :goto_e
.end method


# virtual methods
.method public bridge synthetic bitIndex(Ljava/lang/Object;Ljava/lang/Object;)I
    .registers 4

    check-cast p1, [C

    check-cast p2, [C

    invoke-virtual {p0, p1, p2}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->bitIndex([C[C)I

    move-result v0

    return v0
.end method

.method public bitIndex([C[C)I
    .registers 11

    const/4 v1, 0x0

    array-length v0, p1

    array-length v2, p2

    invoke-static {v0, v2}, Ljava/lang/Math;->max(II)I

    move-result v4

    const/4 v2, 0x1

    move v3, v1

    :goto_9
    if-ge v3, v4, :cond_33

    invoke-direct {p0, p1, v3}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->valueAt([CI)C

    move-result v5

    invoke-direct {p0, p2, v3}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->valueAt([CI)C

    move-result v0

    if-eq v5, v0, :cond_2b

    xor-int v6, v5, v0

    move v0, v1

    :goto_18
    iget v7, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    if-ge v0, v7, :cond_2b

    invoke-direct {p0, v0}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->mask(I)I

    move-result v7

    and-int/2addr v7, v6

    if-eqz v7, :cond_28

    iget v1, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    mul-int/2addr v1, v3

    add-int/2addr v0, v1

    :goto_27
    return v0

    :cond_28
    add-int/lit8 v0, v0, 0x1

    goto :goto_18

    :cond_2b
    if-eqz v5, :cond_39

    move v0, v1

    :goto_2e
    add-int/lit8 v2, v3, 0x1

    move v3, v2

    move v2, v0

    goto :goto_9

    :cond_33
    if-eqz v2, :cond_37

    const/4 v0, -0x1

    goto :goto_27

    :cond_37
    const/4 v0, -0x2

    goto :goto_27

    :cond_39
    move v0, v2

    goto :goto_2e
.end method

.method public bridge synthetic compare(Ljava/lang/Object;Ljava/lang/Object;)I
    .registers 4

    check-cast p1, [C

    check-cast p2, [C

    invoke-virtual {p0, p1, p2}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->compare([C[C)I

    move-result v0

    return v0
.end method

.method public compare([C[C)I
    .registers 7

    const/4 v0, 0x0

    if-nez p1, :cond_8

    if-nez p2, :cond_6

    :cond_5
    :goto_5
    return v0

    :cond_6
    const/4 v0, -0x1

    goto :goto_5

    :cond_8
    if-nez p2, :cond_e

    if-eqz p1, :cond_5

    const/4 v0, 0x1

    goto :goto_5

    :cond_e
    array-length v1, p1

    array-length v2, p2

    if-eq v1, v2, :cond_16

    array-length v0, p1

    array-length v1, p2

    sub-int/2addr v0, v1

    goto :goto_5

    :cond_16
    move v1, v0

    :goto_17
    array-length v2, p1

    if-ge v1, v2, :cond_5

    aget-char v2, p1, v1

    and-int/lit16 v2, v2, 0xff

    aget-char v3, p2, v1

    and-int/lit16 v3, v3, 0xff

    sub-int/2addr v2, v3

    if-eqz v2, :cond_27

    move v0, v2

    goto :goto_5

    :cond_27
    add-int/lit8 v1, v1, 0x1

    goto :goto_17
.end method

.method public bridge synthetic isBitSet(Ljava/lang/Object;I)Z
    .registers 4

    check-cast p1, [C

    invoke-virtual {p0, p1, p2}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->isBitSet([CI)Z

    move-result v0

    return v0
.end method

.method public isBitSet([CI)Z
    .registers 6

    const/4 v0, 0x0

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->lengthInBits([C)I

    move-result v1

    if-lt p2, v1, :cond_8

    :cond_7
    :goto_7
    return v0

    :cond_8
    iget v1, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    div-int v1, p2, v1

    iget v2, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    rem-int v2, p2, v2

    aget-char v1, p1, v1

    invoke-direct {p0, v2}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->mask(I)I

    move-result v2

    and-int/2addr v1, v2

    if-eqz v1, :cond_7

    const/4 v0, 0x1

    goto :goto_7
.end method

.method public bridge synthetic isPrefix(Ljava/lang/Object;Ljava/lang/Object;)Z
    .registers 4

    check-cast p1, [C

    check-cast p2, [C

    invoke-virtual {p0, p1, p2}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->isPrefix([C[C)Z

    move-result v0

    return v0
.end method

.method public isPrefix([C[C)Z
    .registers 7

    const/4 v1, 0x0

    array-length v0, p1

    array-length v2, p2

    if-ge v0, v2, :cond_6

    :cond_5
    :goto_5
    return v1

    :cond_6
    move v0, v1

    :goto_7
    array-length v2, p2

    if-ge v0, v2, :cond_13

    aget-char v2, p1, v0

    aget-char v3, p2, v0

    if-ne v2, v3, :cond_5

    add-int/lit8 v0, v0, 0x1

    goto :goto_7

    :cond_13
    const/4 v1, 0x1

    goto :goto_5
.end method

.method public bridge synthetic lengthInBits(Ljava/lang/Object;)I
    .registers 3

    check-cast p1, [C

    invoke-virtual {p0, p1}, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->lengthInBits([C)I

    move-result v0

    return v0
.end method

.method public lengthInBits([C)I
    .registers 4

    array-length v0, p1

    iget v1, p0, Lorg/ardverk/collection/CharArrayKeyAnalyzer;->size:I

    mul-int/2addr v0, v1

    return v0
.end method