CompareUtils.smali

.class public final Lcom/tencent/tinker/android/dex/util/CompareUtils;
.super Ljava/lang/Object;


# direct methods
.method private constructor <init>()V
    .registers 1

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

    return-void
.end method

.method public static aArrCompare([Ljava/lang/Comparable;[Ljava/lang/Comparable;)I
    .registers 7
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T::",
            "Ljava/lang/Comparable",
            "<TT;>;>([TT;[TT;)I"
        }
    .end annotation

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-object v0, p0, v2

    aget-object v4, p1, v2

    invoke-interface {v0, v4}, Ljava/lang/Comparable;->compareTo(Ljava/lang/Object;)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static aArrCompare([Ljava/lang/Object;[Ljava/lang/Object;Ljava/util/Comparator;)I
    .registers 8
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">([TT;[TT;",
            "Ljava/util/Comparator",
            "<TT;>;)I"
        }
    .end annotation

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-object v0, p0, v2

    aget-object v4, p1, v2

    invoke-interface {p2, v0, v4}, Ljava/util/Comparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static sArrCompare([B[B)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-byte v0, p0, v2

    aget-byte v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->sCompare(BB)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static sArrCompare([I[I)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget v0, p0, v2

    aget v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->sCompare(II)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static sArrCompare([J[J)I
    .registers 10

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-wide v4, p0, v2

    aget-wide v6, p1, v2

    invoke-static {v4, v5, v6, v7}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->sCompare(JJ)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static sArrCompare([S[S)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-short v0, p0, v2

    aget-short v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->sCompare(SS)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static sCompare(BB)I
    .registers 3

    if-ne p0, p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    if-ge p0, p1, :cond_8

    const/4 v0, -0x1

    goto :goto_3

    :cond_8
    const/4 v0, 0x1

    goto :goto_3
.end method

.method public static sCompare(II)I
    .registers 3

    if-ne p0, p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    if-ge p0, p1, :cond_8

    const/4 v0, -0x1

    goto :goto_3

    :cond_8
    const/4 v0, 0x1

    goto :goto_3
.end method

.method public static sCompare(JJ)I
    .registers 6

    cmp-long v0, p0, p2

    if-nez v0, :cond_6

    const/4 v0, 0x0

    :goto_5
    return v0

    :cond_6
    cmp-long v0, p0, p2

    if-gez v0, :cond_c

    const/4 v0, -0x1

    goto :goto_5

    :cond_c
    const/4 v0, 0x1

    goto :goto_5
.end method

.method public static sCompare(SS)I
    .registers 3

    if-ne p0, p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    if-ge p0, p1, :cond_8

    const/4 v0, -0x1

    goto :goto_3

    :cond_8
    const/4 v0, 0x1

    goto :goto_3
.end method

.method public static uArrCompare([B[B)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-byte v0, p0, v2

    aget-byte v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uCompare(BB)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static uArrCompare([I[I)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget v0, p0, v2

    aget v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uCompare(II)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static uArrCompare([S[S)I
    .registers 7

    const/4 v1, 0x0

    array-length v3, p0

    array-length v0, p1

    if-ge v3, v0, :cond_7

    const/4 v0, -0x1

    :cond_6
    :goto_6
    return v0

    :cond_7
    if-le v3, v0, :cond_b

    const/4 v0, 0x1

    goto :goto_6

    :cond_b
    move v2, v1

    :goto_c
    if-ge v2, v3, :cond_1c

    aget-short v0, p0, v2

    aget-short v4, p1, v2

    invoke-static {v0, v4}, Lcom/tencent/tinker/android/dex/util/CompareUtils;->uCompare(SS)I

    move-result v0

    if-nez v0, :cond_6

    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_c

    :cond_1c
    move v0, v1

    goto :goto_6
.end method

.method public static uCompare(BB)I
    .registers 4

    if-ne p0, p1, :cond_4

    const/4 v0, 0x0

    :goto_3
    return v0

    :cond_4
    and-int/lit16 v0, p0, 0xff

    and-int/lit16 v1, p1, 0xff

    if-ge v0, v1, :cond_c

    const/4 v0, -0x1

    goto :goto_3

    :cond_c
    const/4 v0, 0x1

    goto :goto_3
.end method

.method public static uCompare(II)I
    .registers 8

    const-wide v4, 0xffffffffL

    if-ne p0, p1, :cond_9

    const/4 v0, 0x0

    :goto_8
    return v0

    :cond_9
    int-to-long v0, p0

    and-long/2addr v0, v4

    int-to-long v2, p1

    and-long/2addr v2, v4

    cmp-long v0, v0, v2

    if-gez v0, :cond_13

    const/4 v0, -0x1

    goto :goto_8

    :cond_13
    const/4 v0, 0x1

    goto :goto_8
.end method

.method public static uCompare(SS)I
    .registers 4

    const v1, 0xffff

    if-ne p0, p1, :cond_7

    const/4 v0, 0x0

    :goto_6
    return v0

    :cond_7
    and-int v0, p0, v1

    and-int/2addr v1, p1

    if-ge v0, v1, :cond_e

    const/4 v0, -0x1

    goto :goto_6

    :cond_e
    const/4 v0, 0x1

    goto :goto_6
.end method