NumbersKt__FloorDivModKt.smali

.class Lkotlin/NumbersKt__FloorDivModKt;
.super Lkotlin/NumbersKt__BigIntegersKt;
.source "FloorDivMod.kt"


# annotations
.annotation runtime Lkotlin/Metadata;
    d1 = {
        "\u0000 \n\u0000\n\u0002\u0010\u0008\n\u0002\u0010\u0005\n\u0000\n\u0002\u0010\t\n\u0002\u0010\n\n\u0000\n\u0002\u0010\u0006\n\u0002\u0010\u0007\n\u0000\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0004*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0000\u001a\u00020\u0001*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0002*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0001*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0004*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0005*\u00020\u00022\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0007*\u00020\u00072\u0006\u0010\u0003\u001a\u00020\u0007H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0007*\u00020\u00072\u0006\u0010\u0003\u001a\u00020\u0008H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0007*\u00020\u00082\u0006\u0010\u0003\u001a\u00020\u0007H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0008*\u00020\u00082\u0006\u0010\u0003\u001a\u00020\u0008H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0002*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0001*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0004*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0005*\u00020\u00012\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0002*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0001*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0004*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0005*\u00020\u00042\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0002*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0002H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0001*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0001H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0004*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0004H\u0087\u0008\u001a\u0015\u0010\u0006\u001a\u00020\u0005*\u00020\u00052\u0006\u0010\u0003\u001a\u00020\u0005H\u0087\u0008\u00a8\u0006\t"
    }
    d2 = {
        "floorDiv",
        "",
        "",
        "other",
        "",
        "",
        "mod",
        "",
        "",
        "kotlin-stdlib"
    }
    k = 0x5
    mv = {
        0x1,
        0x6,
        0x0
    }
    xi = 0x31
    xs = "kotlin/NumbersKt"
.end annotation


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

    invoke-direct {p0}, Lkotlin/NumbersKt__BigIntegersKt;-><init>()V

    return-void
.end method

.method private static final floorDiv(BB)I
    .registers 4

    .line 18
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(BI)I
    .registers 4

    .line 50
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(BS)I
    .registers 4

    .line 34
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(IB)I
    .registers 4

    .line 146
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(II)I
    .registers 4

    .line 178
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(IS)I
    .registers 4

    .line 162
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(SB)I
    .registers 4

    .line 82
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(SI)I
    .registers 4

    .line 114
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(SS)I
    .registers 4

    .line 98
    div-int v0, p0, p1

    xor-int v1, p0, p1

    if-gez v1, :cond_b

    mul-int/2addr p1, v0

    if-eq p1, p0, :cond_b

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

    :cond_b
    return v0
.end method

.method private static final floorDiv(BJ)J
    .registers 11

    int-to-long v0, p0

    .line 66
    div-long v2, v0, p1

    xor-long v4, v0, p1

    const-wide/16 v6, 0x0

    cmp-long p0, v4, v6

    if-gez p0, :cond_13

    mul-long/2addr p1, v2

    cmp-long p0, p1, v0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final floorDiv(IJ)J
    .registers 11

    int-to-long v0, p0

    .line 199
    div-long v2, v0, p1

    xor-long v4, v0, p1

    const-wide/16 v6, 0x0

    cmp-long p0, v4, v6

    if-gez p0, :cond_13

    mul-long/2addr p1, v2

    cmp-long p0, p1, v0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final floorDiv(JB)J
    .registers 11

    int-to-long v0, p2

    .line 215
    div-long v2, p0, v0

    xor-long v4, p0, v0

    const-wide/16 v6, 0x0

    cmp-long p2, v4, v6

    if-gez p2, :cond_13

    mul-long/2addr v0, v2

    cmp-long p0, v0, p0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final floorDiv(JI)J
    .registers 11

    int-to-long v0, p2

    .line 247
    div-long v2, p0, v0

    xor-long v4, p0, v0

    const-wide/16 v6, 0x0

    cmp-long p2, v4, v6

    if-gez p2, :cond_13

    mul-long/2addr v0, v2

    cmp-long p0, v0, p0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final floorDiv(JJ)J
    .registers 10

    .line 263
    div-long v0, p0, p2

    xor-long v2, p0, p2

    const-wide/16 v4, 0x0

    cmp-long v2, v2, v4

    if-gez v2, :cond_12

    mul-long/2addr p2, v0

    cmp-long p0, p2, p0

    if-eqz p0, :cond_12

    const-wide/16 p0, -0x1

    add-long/2addr v0, p0

    :cond_12
    return-wide v0
.end method

.method private static final floorDiv(JS)J
    .registers 11

    int-to-long v0, p2

    .line 231
    div-long v2, p0, v0

    xor-long v4, p0, v0

    const-wide/16 v6, 0x0

    cmp-long p2, v4, v6

    if-gez p2, :cond_13

    mul-long/2addr v0, v2

    cmp-long p0, v0, p0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final floorDiv(SJ)J
    .registers 11

    int-to-long v0, p0

    .line 130
    div-long v2, v0, p1

    xor-long v4, v0, p1

    const-wide/16 v6, 0x0

    cmp-long p0, v4, v6

    if-gez p0, :cond_13

    mul-long/2addr p1, v2

    cmp-long p0, p1, v0

    if-eqz p0, :cond_13

    const-wide/16 p0, -0x1

    add-long/2addr v2, p0

    :cond_13
    return-wide v2
.end method

.method private static final mod(BB)B
    .registers 4

    .line 28
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-byte p0, p0

    return p0
.end method

.method private static final mod(IB)B
    .registers 4

    .line 156
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-byte p0, p0

    return p0
.end method

.method private static final mod(JB)B
    .registers 9

    int-to-long v0, p2

    .line 225
    rem-long/2addr p0, v0

    xor-long v2, p0, v0

    neg-long v4, p0

    or-long/2addr v4, p0

    and-long/2addr v2, v4

    const/16 p2, 0x3f

    shr-long/2addr v2, p2

    and-long/2addr v0, v2

    add-long/2addr p0, v0

    long-to-int p0, p0

    int-to-byte p0, p0

    return p0
.end method

.method private static final mod(SB)B
    .registers 4

    .line 92
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-byte p0, p0

    return p0
.end method

.method private static final mod(DD)D
    .registers 11

    rem-double/2addr p0, p2

    const-wide/16 v0, 0x0

    cmpg-double v0, p0, v0

    const/4 v1, 0x1

    const/4 v2, 0x0

    if-nez v0, :cond_b

    move v0, v1

    goto :goto_c

    :cond_b
    move v0, v2

    :goto_c
    if-nez v0, :cond_1f

    .line 329
    invoke-static {p0, p1}, Ljava/lang/Math;->signum(D)D

    move-result-wide v3

    invoke-static {p2, p3}, Ljava/lang/Math;->signum(D)D

    move-result-wide v5

    cmpg-double v0, v3, v5

    if-nez v0, :cond_1b

    goto :goto_1c

    :cond_1b
    move v1, v2

    :goto_1c
    if-nez v1, :cond_1f

    add-double/2addr p0, p2

    :cond_1f
    return-wide p0
.end method

.method private static final mod(DF)D
    .registers 11

    float-to-double v0, p2

    rem-double/2addr p0, v0

    const-wide/16 v2, 0x0

    cmpg-double p2, p0, v2

    const/4 v2, 0x1

    const/4 v3, 0x0

    if-nez p2, :cond_c

    move p2, v2

    goto :goto_d

    :cond_c
    move p2, v3

    :goto_d
    if-nez p2, :cond_20

    .line 316
    invoke-static {p0, p1}, Ljava/lang/Math;->signum(D)D

    move-result-wide v4

    invoke-static {v0, v1}, Ljava/lang/Math;->signum(D)D

    move-result-wide v6

    cmpg-double p2, v4, v6

    if-nez p2, :cond_1c

    goto :goto_1d

    :cond_1c
    move v2, v3

    :goto_1d
    if-nez v2, :cond_20

    add-double/2addr p0, v0

    :cond_20
    return-wide p0
.end method

.method private static final mod(FD)D
    .registers 11

    float-to-double v0, p0

    rem-double/2addr v0, p1

    const-wide/16 v2, 0x0

    cmpg-double p0, v0, v2

    const/4 v2, 0x1

    const/4 v3, 0x0

    if-nez p0, :cond_c

    move p0, v2

    goto :goto_d

    :cond_c
    move p0, v3

    :goto_d
    if-nez p0, :cond_20

    .line 304
    invoke-static {v0, v1}, Ljava/lang/Math;->signum(D)D

    move-result-wide v4

    invoke-static {p1, p2}, Ljava/lang/Math;->signum(D)D

    move-result-wide v6

    cmpg-double p0, v4, v6

    if-nez p0, :cond_1c

    goto :goto_1d

    :cond_1c
    move v2, v3

    :goto_1d
    if-nez v2, :cond_20

    add-double/2addr v0, p1

    :cond_20
    return-wide v0
.end method

.method private static final mod(FF)F
    .registers 6

    rem-float/2addr p0, p1

    const/4 v0, 0x0

    cmpg-float v0, p0, v0

    const/4 v1, 0x1

    const/4 v2, 0x0

    if-nez v0, :cond_a

    move v0, v1

    goto :goto_b

    :cond_a
    move v0, v2

    :goto_b
    if-nez v0, :cond_1e

    .line 291
    invoke-static {p0}, Ljava/lang/Math;->signum(F)F

    move-result v0

    invoke-static {p1}, Ljava/lang/Math;->signum(F)F

    move-result v3

    cmpg-float v0, v0, v3

    if-nez v0, :cond_1a

    goto :goto_1b

    :cond_1a
    move v1, v2

    :goto_1b
    if-nez v1, :cond_1e

    add-float/2addr p0, p1

    :cond_1e
    return p0
.end method

.method private static final mod(BI)I
    .registers 4

    .line 60
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    return p0
.end method

.method private static final mod(II)I
    .registers 4

    .line 191
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    return p0
.end method

.method private static final mod(JI)I
    .registers 9

    int-to-long v0, p2

    .line 257
    rem-long/2addr p0, v0

    xor-long v2, p0, v0

    neg-long v4, p0

    or-long/2addr v4, p0

    and-long/2addr v2, v4

    const/16 p2, 0x3f

    shr-long/2addr v2, p2

    and-long/2addr v0, v2

    add-long/2addr p0, v0

    long-to-int p0, p0

    return p0
.end method

.method private static final mod(SI)I
    .registers 4

    .line 124
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    return p0
.end method

.method private static final mod(BJ)J
    .registers 9

    int-to-long v0, p0

    .line 76
    rem-long/2addr v0, p1

    xor-long v2, v0, p1

    neg-long v4, v0

    or-long/2addr v4, v0

    and-long/2addr v2, v4

    const/16 p0, 0x3f

    shr-long/2addr v2, p0

    and-long p0, p1, v2

    add-long/2addr v0, p0

    return-wide v0
.end method

.method private static final mod(IJ)J
    .registers 9

    int-to-long v0, p0

    .line 209
    rem-long/2addr v0, p1

    xor-long v2, v0, p1

    neg-long v4, v0

    or-long/2addr v4, v0

    and-long/2addr v2, v4

    const/16 p0, 0x3f

    shr-long/2addr v2, p0

    and-long p0, p1, v2

    add-long/2addr v0, p0

    return-wide v0
.end method

.method private static final mod(JJ)J
    .registers 8

    .line 276
    rem-long/2addr p0, p2

    xor-long v0, p0, p2

    neg-long v2, p0

    or-long/2addr v2, p0

    and-long/2addr v0, v2

    const/16 v2, 0x3f

    shr-long/2addr v0, v2

    and-long/2addr p2, v0

    add-long/2addr p0, p2

    return-wide p0
.end method

.method private static final mod(SJ)J
    .registers 9

    int-to-long v0, p0

    .line 140
    rem-long/2addr v0, p1

    xor-long v2, v0, p1

    neg-long v4, v0

    or-long/2addr v4, v0

    and-long/2addr v2, v4

    const/16 p0, 0x3f

    shr-long/2addr v2, p0

    and-long p0, p1, v2

    add-long/2addr v0, p0

    return-wide v0
.end method

.method private static final mod(BS)S
    .registers 4

    .line 44
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-short p0, p0

    return p0
.end method

.method private static final mod(IS)S
    .registers 4

    .line 172
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-short p0, p0

    return p0
.end method

.method private static final mod(JS)S
    .registers 9

    int-to-long v0, p2

    .line 241
    rem-long/2addr p0, v0

    xor-long v2, p0, v0

    neg-long v4, p0

    or-long/2addr v4, p0

    and-long/2addr v2, v4

    const/16 p2, 0x3f

    shr-long/2addr v2, p2

    and-long/2addr v0, v2

    add-long/2addr p0, v0

    long-to-int p0, p0

    int-to-short p0, p0

    return p0
.end method

.method private static final mod(SS)S
    .registers 4

    .line 108
    rem-int/2addr p0, p1

    xor-int v0, p0, p1

    neg-int v1, p0

    or-int/2addr v1, p0

    and-int/2addr v0, v1

    shr-int/lit8 v0, v0, 0x1f

    and-int/2addr p1, v0

    add-int/2addr p0, p1

    int-to-short p0, p0

    return p0
.end method