StopLogic.smali

.class public Landroidx/constraintlayout/motion/utils/StopLogic;
.super Landroidx/constraintlayout/motion/widget/MotionInterpolator;
.source "StopLogic.java"


# instance fields
.field private mBackwards:Z

.field private mLastPosition:F

.field private mNumberOfStages:I

.field private mStage1Duration:F

.field private mStage1EndPosition:F

.field private mStage1Velocity:F

.field private mStage2Duration:F

.field private mStage2EndPosition:F

.field private mStage2Velocity:F

.field private mStage3Duration:F

.field private mStage3EndPosition:F

.field private mStage3Velocity:F

.field private mStartPosition:F

.field private mType:Ljava/lang/String;


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

    return-void
.end method

.method public constructor <init>()V
    .registers 2

    .line 31
    invoke-direct {p0}, Landroidx/constraintlayout/motion/widget/MotionInterpolator;-><init>()V

    .line 37
    const/4 v0, 0x0

    iput-boolean v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z

    return-void
.end method

.method private calcY(F)F
    .registers 7
    .param p1, "time"    # F

    .line 112
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    const/high16 v1, 0x40000000    # 2.0f

    cmpg-float v2, p1, v0

    if-gtz v2, :cond_18

    .line 113
    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    mul-float v3, v2, p1

    iget v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    sub-float/2addr v4, v2

    mul-float v4, v4, p1

    mul-float v4, v4, p1

    mul-float v0, v0, v1

    div-float/2addr v4, v0

    add-float/2addr v3, v4

    return v3

    .line 115
    :cond_18
    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    const/4 v3, 0x1

    if-ne v2, v3, :cond_20

    .line 116
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    return v0

    .line 118
    :cond_20
    sub-float/2addr p1, v0

    .line 119
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    cmpg-float v3, p1, v0

    if-gez v3, :cond_3a

    .line 121
    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    mul-float v4, v3, p1

    add-float/2addr v2, v4

    iget v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    sub-float/2addr v4, v3

    mul-float v4, v4, p1

    mul-float v4, v4, p1

    mul-float v0, v0, v1

    div-float/2addr v4, v0

    add-float/2addr v2, v4

    return v2

    .line 123
    :cond_3a
    const/4 v3, 0x2

    if-ne v2, v3, :cond_40

    .line 124
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    return v0

    .line 126
    :cond_40
    sub-float/2addr p1, v0

    .line 127
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    cmpg-float v2, p1, v0

    if-gez v2, :cond_57

    .line 129
    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    mul-float v4, v3, p1

    add-float/2addr v2, v4

    mul-float v3, v3, p1

    mul-float v3, v3, p1

    mul-float v0, v0, v1

    div-float/2addr v3, v0

    sub-float/2addr v2, v3

    return v2

    .line 131
    :cond_57
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    return v0
.end method

.method private setup(FFFFF)V
    .registers 21
    .param p1, "velocity"    # F
    .param p2, "distance"    # F
    .param p3, "maxAcceleration"    # F
    .param p4, "maxVelocity"    # F
    .param p5, "maxTime"    # F

    .line 160
    move-object v0, p0

    move/from16 v1, p2

    move/from16 v2, p4

    const/4 v3, 0x0

    cmpl-float v4, p1, v3

    if-nez v4, :cond_e

    .line 161
    const v4, 0x38d1b717    # 1.0E-4f

    .end local p1    # "velocity":F
    .local v4, "velocity":F
    goto :goto_10

    .line 160
    .end local v4    # "velocity":F
    .restart local p1    # "velocity":F
    :cond_e
    move/from16 v4, p1

    .line 163
    .end local p1    # "velocity":F
    .restart local v4    # "velocity":F
    :goto_10
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 164
    div-float v5, v4, p3

    .line 165
    .local v5, "min_time_to_stop":F
    mul-float v6, v5, v4

    const/high16 v7, 0x40000000    # 2.0f

    div-float/2addr v6, v7

    .line 167
    .local v6, "stopDistance":F
    const/4 v8, 0x3

    const/4 v9, 0x2

    cmpg-float v10, v4, v3

    if-gez v10, :cond_82

    .line 168
    neg-float v10, v4

    div-float v10, v10, p3

    .line 169
    .local v10, "timeToZeroVelocity":F
    mul-float v11, v10, v4

    div-float/2addr v11, v7

    .line 170
    .local v11, "reversDistanceTraveled":F
    sub-float v12, v1, v11

    .line 171
    .local v12, "totalDistance":F
    mul-float v13, p3, v12

    float-to-double v13, v13

    invoke-static {v13, v14}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide v13

    double-to-float v13, v13

    .line 172
    .local v13, "peak_v":F
    cmpg-float v14, v13, v2

    if-gez v14, :cond_55

    .line 173
    const-string v8, "backward accelerate, decelerate"

    iput-object v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 174
    iput v9, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 175
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 176
    iput v13, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 177
    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    .line 178
    sub-float v3, v13, v4

    div-float v3, v3, p3

    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 179
    div-float v8, v13, p3

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 180
    add-float v8, v4, v13

    mul-float v8, v8, v3

    div-float/2addr v8, v7

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 181
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    .line 182
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    .line 183
    return-void

    .line 185
    :cond_55
    const-string v3, "backward accelerate cruse decelerate"

    iput-object v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 186
    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 187
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 188
    iput v2, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 189
    iput v2, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    .line 191
    sub-float v3, v2, v4

    div-float v3, v3, p3

    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 192
    div-float v8, v2, p3

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    .line 193
    add-float v9, v4, v2

    mul-float v9, v9, v3

    div-float/2addr v9, v7

    .line 194
    .local v9, "accDist":F
    mul-float v3, v2, v8

    div-float/2addr v3, v7

    .line 195
    .local v3, "decDist":F
    sub-float v7, v1, v9

    sub-float/2addr v7, v3

    div-float/2addr v7, v2

    iput v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 196
    iput v9, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 197
    sub-float v7, v1, v3

    iput v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    .line 198
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    .line 199
    return-void

    .line 202
    .end local v3    # "decDist":F
    .end local v9    # "accDist":F
    .end local v10    # "timeToZeroVelocity":F
    .end local v11    # "reversDistanceTraveled":F
    .end local v12    # "totalDistance":F
    .end local v13    # "peak_v":F
    :cond_82
    cmpl-float v10, v6, v1

    if-ltz v10, :cond_99

    .line 204
    const-string v8, "hard stop"

    iput-object v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 205
    mul-float v7, v7, v1

    div-float/2addr v7, v4

    .line 206
    .local v7, "time":F
    const/4 v8, 0x1

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 207
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 208
    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 209
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 210
    iput v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 211
    return-void

    .line 214
    .end local v7    # "time":F
    :cond_99
    sub-float v10, v1, v6

    .line 215
    .local v10, "distance_before_break":F
    div-float v11, v10, v4

    .line 216
    .local v11, "cruseTime":F
    add-float v12, v11, v5

    cmpg-float v12, v12, p5

    if-gez v12, :cond_ba

    .line 217
    const-string v7, "cruse decelerate"

    iput-object v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 218
    iput v9, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 219
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 220
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 221
    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    .line 222
    iput v10, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 223
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    .line 224
    iput v11, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 225
    div-float v3, v4, p3

    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 226
    return-void

    .line 229
    :cond_ba
    mul-float v12, p3, v1

    mul-float v13, v4, v4

    div-float/2addr v13, v7

    add-float/2addr v12, v13

    float-to-double v12, v12

    invoke-static {v12, v13}, Ljava/lang/Math;->sqrt(D)D

    move-result-wide v12

    double-to-float v12, v12

    .line 230
    .local v12, "peak_v":F
    sub-float v13, v12, v4

    div-float v13, v13, p3

    iput v13, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 231
    div-float v13, v12, p3

    iput v13, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 232
    cmpg-float v13, v12, v2

    if-gez v13, :cond_f4

    .line 233
    const-string v8, "accelerate decelerate"

    iput-object v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 234
    iput v9, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 235
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 236
    iput v12, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 237
    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    .line 238
    sub-float v3, v12, v4

    div-float v3, v3, p3

    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 239
    div-float v8, v12, p3

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 240
    add-float v8, v4, v12

    mul-float v8, v8, v3

    div-float/2addr v8, v7

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 241
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    .line 243
    return-void

    .line 245
    :cond_f4
    const-string v3, "accelerate cruse decelerate"

    iput-object v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    .line 247
    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    .line 248
    iput v4, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    .line 249
    iput v2, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    .line 250
    iput v2, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    .line 252
    sub-float v3, v2, v4

    div-float v3, v3, p3

    iput v3, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    .line 253
    div-float v8, v2, p3

    iput v8, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    .line 254
    add-float v9, v4, v2

    mul-float v9, v9, v3

    div-float/2addr v9, v7

    .line 255
    .restart local v9    # "accDist":F
    mul-float v3, v2, v8

    div-float/2addr v3, v7

    .line 257
    .restart local v3    # "decDist":F
    sub-float v7, v1, v9

    sub-float/2addr v7, v3

    div-float/2addr v7, v2

    iput v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    .line 258
    iput v9, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    .line 259
    sub-float v7, v1, v3

    iput v7, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    .line 260
    iput v1, v0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    .line 261
    return-void
.end method


# virtual methods
.method public config(FFFFFF)V
    .registers 13
    .param p1, "currentPos"    # F
    .param p2, "destination"    # F
    .param p3, "currentVelocity"    # F
    .param p4, "maxTime"    # F
    .param p5, "maxAcceleration"    # F
    .param p6, "maxVelocity"    # F

    .line 137
    iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F

    .line 138
    cmpl-float v0, p1, p2

    if-lez v0, :cond_8

    const/4 v0, 0x1

    goto :goto_9

    :cond_8
    const/4 v0, 0x0

    :goto_9
    iput-boolean v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z

    .line 139
    if-eqz v0, :cond_18

    .line 140
    neg-float v1, p3

    sub-float v2, p1, p2

    move-object v0, p0

    move v3, p5

    move v4, p6

    move v5, p4

    invoke-direct/range {v0 .. v5}, Landroidx/constraintlayout/motion/utils/StopLogic;->setup(FFFFF)V

    goto :goto_22

    .line 142
    :cond_18
    sub-float v2, p2, p1

    move-object v0, p0

    move v1, p3

    move v3, p5

    move v4, p6

    move v5, p4

    invoke-direct/range {v0 .. v5}, Landroidx/constraintlayout/motion/utils/StopLogic;->setup(FFFFF)V

    .line 144
    :goto_22
    return-void
.end method

.method public debug(Ljava/lang/String;Ljava/lang/String;F)V
    .registers 10
    .param p1, "tag"    # Ljava/lang/String;
    .param p2, "desc"    # Ljava/lang/String;
    .param p3, "time"    # F

    .line 49
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " ===== "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-object v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mType:Ljava/lang/String;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 50
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-boolean v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z

    if-eqz v1, :cond_28

    const-string v1, "backwards"

    goto :goto_2a

    :cond_28
    const-string v1, "forward "

    :goto_2a
    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " time = "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, p3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v1, "  stages "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 51
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " dur "

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v2, " vel "

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v3, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    const-string v3, " pos "

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v4, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1EndPosition:F

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 53
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    const/4 v4, 0x1

    if-le v0, v4, :cond_9f

    .line 54
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v5, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 57
    :cond_9f
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    const/4 v5, 0x2

    if-le v0, v5, :cond_cb

    .line 58
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(F)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 61
    :cond_cb
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    cmpg-float v1, p3, v0

    if-gtz v1, :cond_e7

    .line 62
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string/jumbo v1, "stage 0"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 63
    return-void

    .line 65
    :cond_e7
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    if-ne v1, v4, :cond_100

    .line 66
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, "end stage 0"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 67
    return-void

    .line 69
    :cond_100
    sub-float/2addr p3, v0

    .line 70
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    cmpg-float v2, p3, v0

    if-gez v2, :cond_11c

    .line 72
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " stage 1"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 73
    return-void

    .line 75
    :cond_11c
    if-ne v1, v5, :cond_133

    .line 76
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, "end stage 1"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 77
    return-void

    .line 79
    :cond_133
    sub-float/2addr p3, v0

    .line 80
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    cmpg-float v0, p3, v0

    if-gez v0, :cond_14f

    .line 82
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " stage 2"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 83
    return-void

    .line 85
    :cond_14f
    new-instance v0, Ljava/lang/StringBuilder;

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

    invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, " end stage 2"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {p1, v0}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I

    .line 86
    return-void
.end method

.method public getInterpolation(F)F
    .registers 4
    .param p1, "v"    # F

    .line 148
    invoke-direct {p0, p1}, Landroidx/constraintlayout/motion/utils/StopLogic;->calcY(F)F

    move-result v0

    .line 149
    .local v0, "y":F
    iput p1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F

    .line 150
    iget-boolean v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z

    if-eqz v1, :cond_e

    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F

    sub-float/2addr v1, v0

    goto :goto_11

    :cond_e
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStartPosition:F

    add-float/2addr v1, v0

    :goto_11
    return v1
.end method

.method public getVelocity()F
    .registers 2

    .line 155
    iget-boolean v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mBackwards:Z

    if-eqz v0, :cond_c

    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F

    invoke-virtual {p0, v0}, Landroidx/constraintlayout/motion/utils/StopLogic;->getVelocity(F)F

    move-result v0

    neg-float v0, v0

    goto :goto_12

    :cond_c
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mLastPosition:F

    invoke-virtual {p0, v0}, Landroidx/constraintlayout/motion/utils/StopLogic;->getVelocity(F)F

    move-result v0

    :goto_12
    return v0
.end method

.method public getVelocity(F)F
    .registers 5
    .param p1, "x"    # F

    .line 89
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Duration:F

    cmpg-float v1, p1, v0

    if-gtz v1, :cond_10

    .line 90
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage1Velocity:F

    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    sub-float/2addr v2, v1

    mul-float v2, v2, p1

    div-float/2addr v2, v0

    add-float/2addr v1, v2

    return v1

    .line 92
    :cond_10
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mNumberOfStages:I

    const/4 v2, 0x1

    if-ne v1, v2, :cond_17

    .line 93
    const/4 v0, 0x0

    return v0

    .line 95
    :cond_17
    sub-float/2addr p1, v0

    .line 96
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Duration:F

    cmpg-float v2, p1, v0

    if-gez v2, :cond_28

    .line 98
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2Velocity:F

    iget v2, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    sub-float/2addr v2, v1

    mul-float v2, v2, p1

    div-float/2addr v2, v0

    add-float/2addr v1, v2

    return v1

    .line 100
    :cond_28
    const/4 v2, 0x2

    if-ne v1, v2, :cond_2e

    .line 101
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage2EndPosition:F

    return v0

    .line 103
    :cond_2e
    sub-float/2addr p1, v0

    .line 104
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Duration:F

    cmpg-float v1, p1, v0

    if-gez v1, :cond_3c

    .line 106
    iget v1, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3Velocity:F

    mul-float v2, v1, p1

    div-float/2addr v2, v0

    sub-float/2addr v1, v2

    return v1

    .line 108
    :cond_3c
    iget v0, p0, Landroidx/constraintlayout/motion/utils/StopLogic;->mStage3EndPosition:F

    return v0
.end method