RopeJoint.smali

.class public Lorg/jbox2d/dynamics/joints/RopeJoint;
.super Lorg/jbox2d/dynamics/joints/Joint;
.source "RopeJoint.java"


# instance fields
.field private m_impulse:F

.field private m_indexA:I

.field private m_indexB:I

.field private m_invIA:F

.field private m_invIB:F

.field private m_invMassA:F

.field private m_invMassB:F

.field private m_length:F

.field private final m_localAnchorA:Lorg/jbox2d/common/Vec2;

.field private final m_localAnchorB:Lorg/jbox2d/common/Vec2;

.field private final m_localCenterA:Lorg/jbox2d/common/Vec2;

.field private final m_localCenterB:Lorg/jbox2d/common/Vec2;

.field private m_mass:F

.field private m_maxLength:F

.field private final m_rA:Lorg/jbox2d/common/Vec2;

.field private final m_rB:Lorg/jbox2d/common/Vec2;

.field private m_state:Lorg/jbox2d/dynamics/joints/LimitState;

.field private final m_u:Lorg/jbox2d/common/Vec2;


# direct methods
.method protected constructor <init>(Lorg/jbox2d/pooling/IWorldPool;Lorg/jbox2d/dynamics/joints/RopeJointDef;)V
    .registers 6

    .prologue
    const/4 v2, 0x0

    .line 43
    invoke-direct {p0, p1, p2}, Lorg/jbox2d/dynamics/joints/Joint;-><init>(Lorg/jbox2d/pooling/IWorldPool;Lorg/jbox2d/dynamics/joints/JointDef;)V

    .line 21
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    .line 22
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    .line 30
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    .line 31
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    .line 32
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    .line 33
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;

    .line 34
    new-instance v0, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0}, Lorg/jbox2d/common/Vec2;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;

    .line 44
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    iget-object v1, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->localAnchorA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 45
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    iget-object v1, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->localAnchorB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 47
    iget v0, p2, Lorg/jbox2d/dynamics/joints/RopeJointDef;->maxLength:F

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    .line 49
    iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F

    .line 50
    iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    .line 51
    sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->INACTIVE:Lorg/jbox2d/dynamics/joints/LimitState;

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;

    .line 52
    iput v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    .line 53
    return-void
.end method


# virtual methods
.method public getAnchorA(Lorg/jbox2d/common/Vec2;)V
    .registers 4

    .prologue
    .line 238
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;

    iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v1, p1}, Lorg/jbox2d/dynamics/Body;->getWorldPointToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 239
    return-void
.end method

.method public getAnchorB(Lorg/jbox2d/common/Vec2;)V
    .registers 4

    .prologue
    .line 243
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;

    iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v1, p1}, Lorg/jbox2d/dynamics/Body;->getWorldPointToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 244
    return-void
.end method

.method public getLimitState()Lorg/jbox2d/dynamics/joints/LimitState;
    .registers 2

    .prologue
    .line 273
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;

    return-object v0
.end method

.method public getLocalAnchorA()Lorg/jbox2d/common/Vec2;
    .registers 2

    .prologue
    .line 257
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    return-object v0
.end method

.method public getLocalAnchorB()Lorg/jbox2d/common/Vec2;
    .registers 2

    .prologue
    .line 261
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    return-object v0
.end method

.method public getMaxLength()F
    .registers 2

    .prologue
    .line 265
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    return v0
.end method

.method public getReactionForce(FLorg/jbox2d/common/Vec2;)V
    .registers 5

    .prologue
    .line 248
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-virtual {p2, v0}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v0

    invoke-virtual {v0, p1}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;

    move-result-object v0

    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;

    .line 249
    return-void
.end method

.method public getReactionTorque(F)F
    .registers 3

    .prologue
    .line 253
    const/4 v0, 0x0

    return v0
.end method

.method public initVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V
    .registers 15

    .prologue
    const/high16 v12, 0x3f800000    # 1.0f

    const/4 v1, 0x0

    .line 57
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_islandIndex:I

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    .line 58
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_islandIndex:I

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    .line 59
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;

    iget-object v2, v2, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;

    iget-object v2, v2, Lorg/jbox2d/common/Sweep;->localCenter:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 60
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;

    iget-object v2, v2, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;

    iget-object v2, v2, Lorg/jbox2d/common/Sweep;->localCenter:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 61
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invMass:F

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    .line 62
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invMass:F

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    .line 63
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyA:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invI:F

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F

    .line 64
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_bodyB:Lorg/jbox2d/dynamics/Body;

    iget v0, v0, Lorg/jbox2d/dynamics/Body;->m_invI:F

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F

    .line 66
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v0, v0, v2

    iget-object v0, v0, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;

    .line 67
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iget v4, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 68
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iget-object v5, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;

    .line 69
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iget v3, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 71
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v2, v2, v6

    iget-object v6, v2, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;

    .line 72
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v2, v2, v7

    iget v7, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 73
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v2, v2, v8

    iget-object v8, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;

    .line 74
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v2, v2, v9

    iget v2, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 76
    iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v9}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;

    move-result-object v9

    .line 77
    iget-object v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v10}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;

    move-result-object v10

    .line 78
    iget-object v11, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v11}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v11

    .line 80
    invoke-virtual {v9, v4}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;

    .line 81
    invoke-virtual {v10, v7}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;

    .line 84
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v11, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    invoke-static {v9, v4, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 85
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v11, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    invoke-static {v10, v4, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 87
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v4, v6}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v4, v6}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    invoke-virtual {v4, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v0

    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0, v4}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 89
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0}, Lorg/jbox2d/common/Vec2;->length()F

    move-result v0

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    .line 91
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    sub-float/2addr v0, v4

    .line 92
    cmpl-float v0, v0, v1

    if-lez v0, :cond_193

    .line 93
    sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->AT_UPPER:Lorg/jbox2d/dynamics/joints/LimitState;

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;

    .line 98
    :goto_e1
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    sget v4, Lorg/jbox2d/common/Settings;->linearSlop:F

    cmpl-float v0, v0, v4

    if-lez v0, :cond_199

    .line 99
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    div-float v4, v12, v4

    invoke-virtual {v0, v4}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;

    .line 108
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-static {v0, v4}, Lorg/jbox2d/common/Vec2;->cross(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v0

    .line 109
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-static {v4, v6}, Lorg/jbox2d/common/Vec2;->cross(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v4

    .line 110
    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F

    mul-float/2addr v7, v0

    mul-float/2addr v0, v7

    add-float/2addr v0, v6

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    add-float/2addr v0, v6

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F

    mul-float/2addr v6, v4

    mul-float/2addr v4, v6

    add-float/2addr v0, v4

    .line 112
    cmpl-float v4, v0, v1

    if-eqz v4, :cond_1a3

    div-float v0, v12, v0

    :goto_117
    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F

    .line 114
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;

    iget-boolean v0, v0, Lorg/jbox2d/dynamics/TimeStep;->warmStarting:Z

    if-eqz v0, :cond_1a6

    .line 116
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;

    iget v1, v1, Lorg/jbox2d/dynamics/TimeStep;->dtRatio:F

    mul-float/2addr v0, v1

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    .line 118
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    iget-object v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    iget v1, v1, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v0, v1

    .line 119
    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    iget v4, v4, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v4, v1

    .line 120
    iget v1, v5, Lorg/jbox2d/common/Vec2;->x:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v6, v0

    sub-float/2addr v1, v6

    iput v1, v5, Lorg/jbox2d/common/Vec2;->x:F

    .line 121
    iget v1, v5, Lorg/jbox2d/common/Vec2;->y:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v6, v4

    sub-float/2addr v1, v6

    iput v1, v5, Lorg/jbox2d/common/Vec2;->y:F

    .line 122
    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F

    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v5, v4

    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v6, v0

    sub-float/2addr v5, v6

    mul-float/2addr v1, v5

    sub-float v1, v3, v1

    .line 124
    iget v3, v8, Lorg/jbox2d/common/Vec2;->x:F

    iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v5, v0

    add-float/2addr v3, v5

    iput v3, v8, Lorg/jbox2d/common/Vec2;->x:F

    .line 125
    iget v3, v8, Lorg/jbox2d/common/Vec2;->y:F

    iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v5, v4

    add-float/2addr v3, v5

    iput v3, v8, Lorg/jbox2d/common/Vec2;->y:F

    .line 126
    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F

    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v4, v5

    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    iget v5, v5, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v0, v5

    sub-float v0, v4, v0

    mul-float/2addr v0, v3

    add-float/2addr v0, v2

    .line 131
    :goto_176
    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    const/4 v3, 0x2

    invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushRot(I)V

    .line 132
    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    const/4 v3, 0x1

    invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V

    .line 135
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iput v1, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 137
    iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v1, v1, v2

    iput v0, v1, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 138
    :goto_192
    return-void

    .line 95
    :cond_193
    sget-object v0, Lorg/jbox2d/dynamics/joints/LimitState;->INACTIVE:Lorg/jbox2d/dynamics/joints/LimitState;

    iput-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_state:Lorg/jbox2d/dynamics/joints/LimitState;

    goto/16 :goto_e1

    .line 101
    :cond_199
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v0}, Lorg/jbox2d/common/Vec2;->setZero()V

    .line 102
    iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F

    .line 103
    iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    goto :goto_192

    :cond_1a3
    move v0, v1

    .line 112
    goto/16 :goto_117

    .line 128
    :cond_1a6
    iput v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    move v0, v2

    move v1, v3

    goto :goto_176
.end method

.method public setMaxLength(F)V
    .registers 2

    .prologue
    .line 269
    iput p1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    .line 270
    return-void
.end method

.method public solvePositionConstraints(Lorg/jbox2d/dynamics/SolverData;)Z
    .registers 14

    .prologue
    .line 189
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v0, v0, v1

    iget-object v0, v0, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;

    .line 190
    iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v1, v1, v2

    iget v1, v1, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 191
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v2, v2, v3

    iget-object v2, v2, Lorg/jbox2d/dynamics/contacts/Position;->c:Lorg/jbox2d/common/Vec2;

    .line 192
    iget-object v3, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v3, v3, v4

    iget v3, v3, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 194
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v4}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;

    move-result-object v4

    .line 195
    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v5}, Lorg/jbox2d/pooling/IWorldPool;->popRot()Lorg/jbox2d/common/Rot;

    move-result-object v5

    .line 196
    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v6}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v6

    .line 197
    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v7}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v7

    .line 198
    iget-object v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v8}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v8

    .line 199
    iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v9}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v9

    .line 201
    invoke-virtual {v4, v1}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;

    .line 202
    invoke-virtual {v5, v3}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;

    .line 205
    iget-object v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v9, v10}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v10

    iget-object v11, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterA:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v10, v11}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v10

    invoke-static {v4, v10, v7}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 206
    iget-object v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localAnchorB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v9, v4}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    iget-object v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_localCenterB:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v4, v9}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    invoke-static {v5, v4, v8}, Lorg/jbox2d/common/Rot;->mulToOutUnsafe(Lorg/jbox2d/common/Rot;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 207
    invoke-virtual {v6, v2}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    invoke-virtual {v4, v8}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    invoke-virtual {v4, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v4

    invoke-virtual {v4, v7}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 209
    invoke-virtual {v6}, Lorg/jbox2d/common/Vec2;->normalize()F

    move-result v4

    .line 210
    iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    sub-float v5, v4, v5

    .line 212
    const/4 v9, 0x0

    sget v10, Lorg/jbox2d/common/Settings;->maxLinearCorrection:F

    invoke-static {v5, v9, v10}, Lorg/jbox2d/common/MathUtils;->clamp(FFF)F

    move-result v5

    .line 214
    iget v9, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F

    neg-float v9, v9

    mul-float/2addr v5, v9

    .line 215
    iget v9, v6, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v9, v5

    .line 216
    iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v5, v6

    .line 218
    iget v6, v0, Lorg/jbox2d/common/Vec2;->x:F

    iget v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v10, v9

    sub-float/2addr v6, v10

    iput v6, v0, Lorg/jbox2d/common/Vec2;->x:F

    .line 219
    iget v6, v0, Lorg/jbox2d/common/Vec2;->y:F

    iget v10, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v10, v5

    sub-float/2addr v6, v10

    iput v6, v0, Lorg/jbox2d/common/Vec2;->y:F

    .line 220
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F

    iget v6, v7, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v6, v5

    iget v7, v7, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v7, v9

    sub-float/2addr v6, v7

    mul-float/2addr v0, v6

    sub-float v0, v1, v0

    .line 221
    iget v1, v2, Lorg/jbox2d/common/Vec2;->x:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v6, v9

    add-float/2addr v1, v6

    iput v1, v2, Lorg/jbox2d/common/Vec2;->x:F

    .line 222
    iget v1, v2, Lorg/jbox2d/common/Vec2;->y:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v6, v5

    add-float/2addr v1, v6

    iput v1, v2, Lorg/jbox2d/common/Vec2;->y:F

    .line 223
    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F

    iget v2, v8, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v2, v5

    iget v5, v8, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v5, v9

    sub-float/2addr v2, v5

    mul-float/2addr v1, v2

    add-float/2addr v1, v3

    .line 225
    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    const/4 v3, 0x2

    invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushRot(I)V

    .line 226
    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    const/4 v3, 0x4

    invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V

    .line 229
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iput v0, v2, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 231
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v0, v0, v2

    iput v1, v0, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 233
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    sub-float v0, v4, v0

    sget v1, Lorg/jbox2d/common/Settings;->linearSlop:F

    cmpg-float v0, v0, v1

    if-gez v0, :cond_ef

    const/4 v0, 0x1

    :goto_ee
    return v0

    :cond_ef
    const/4 v0, 0x0

    goto :goto_ee
.end method

.method public solveVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V
    .registers 12

    .prologue
    const/4 v9, 0x0

    .line 142
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v0, v0, v1

    iget-object v1, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;

    .line 143
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v0, v0, v2

    iget v2, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 144
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v0, v0, v3

    iget-object v3, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->v:Lorg/jbox2d/common/Vec2;

    .line 145
    iget-object v0, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v4, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v0, v0, v4

    iget v4, v0, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 148
    iget-object v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v0}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v0

    .line 149
    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v5}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v5

    .line 150
    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    invoke-interface {v6}, Lorg/jbox2d/pooling/IWorldPool;->popVec2()Lorg/jbox2d/common/Vec2;

    move-result-object v6

    .line 152
    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    invoke-static {v2, v7, v0}, Lorg/jbox2d/common/Vec2;->crossToOutUnsafe(FLorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 153
    invoke-virtual {v0, v1}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 154
    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    invoke-static {v4, v7, v5}, Lorg/jbox2d/common/Vec2;->crossToOutUnsafe(FLorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 155
    invoke-virtual {v5, v3}, Lorg/jbox2d/common/Vec2;->addLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    .line 157
    iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_length:F

    iget v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_maxLength:F

    sub-float/2addr v7, v8

    .line 158
    iget-object v8, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    invoke-virtual {v6, v5}, Lorg/jbox2d/common/Vec2;->set(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v5

    invoke-virtual {v5, v0}, Lorg/jbox2d/common/Vec2;->subLocal(Lorg/jbox2d/common/Vec2;)Lorg/jbox2d/common/Vec2;

    move-result-object v0

    invoke-static {v8, v0}, Lorg/jbox2d/common/Vec2;->dot(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v0

    .line 161
    cmpg-float v5, v7, v9

    if-gez v5, :cond_60

    .line 162
    iget-object v5, p1, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;

    iget v5, v5, Lorg/jbox2d/dynamics/TimeStep;->inv_dt:F

    mul-float/2addr v5, v7

    add-float/2addr v0, v5

    .line 165
    :cond_60
    iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_mass:F

    neg-float v5, v5

    mul-float/2addr v0, v5

    .line 166
    iget v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    .line 167
    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    add-float/2addr v0, v6

    invoke-static {v9, v0}, Lorg/jbox2d/common/MathUtils;->min(FF)F

    move-result v0

    iput v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    .line 168
    iget v0, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_impulse:F

    sub-float/2addr v0, v5

    .line 170
    iget-object v5, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    iget v5, v5, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v5, v0

    .line 171
    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_u:Lorg/jbox2d/common/Vec2;

    iget v6, v6, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v0, v6

    .line 172
    iget v6, v1, Lorg/jbox2d/common/Vec2;->x:F

    iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v7, v5

    sub-float/2addr v6, v7

    iput v6, v1, Lorg/jbox2d/common/Vec2;->x:F

    .line 173
    iget v6, v1, Lorg/jbox2d/common/Vec2;->y:F

    iget v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassA:F

    mul-float/2addr v7, v0

    sub-float/2addr v6, v7

    iput v6, v1, Lorg/jbox2d/common/Vec2;->y:F

    .line 174
    iget v1, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIA:F

    iget-object v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    iget v6, v6, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v6, v0

    iget-object v7, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rA:Lorg/jbox2d/common/Vec2;

    iget v7, v7, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v7, v5

    sub-float/2addr v6, v7

    mul-float/2addr v1, v6

    sub-float v1, v2, v1

    .line 175
    iget v2, v3, Lorg/jbox2d/common/Vec2;->x:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v6, v5

    add-float/2addr v2, v6

    iput v2, v3, Lorg/jbox2d/common/Vec2;->x:F

    .line 176
    iget v2, v3, Lorg/jbox2d/common/Vec2;->y:F

    iget v6, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invMassB:F

    mul-float/2addr v6, v0

    add-float/2addr v2, v6

    iput v2, v3, Lorg/jbox2d/common/Vec2;->y:F

    .line 177
    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_invIB:F

    iget-object v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    iget v3, v3, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v0, v3

    iget-object v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_rB:Lorg/jbox2d/common/Vec2;

    iget v3, v3, Lorg/jbox2d/common/Vec2;->y:F

    mul-float/2addr v3, v5

    sub-float/2addr v0, v3

    mul-float/2addr v0, v2

    add-float/2addr v0, v4

    .line 179
    iget-object v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->pool:Lorg/jbox2d/pooling/IWorldPool;

    const/4 v3, 0x3

    invoke-interface {v2, v3}, Lorg/jbox2d/pooling/IWorldPool;->pushVec2(I)V

    .line 182
    iget-object v2, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v3, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexA:I

    aget-object v2, v2, v3

    iput v1, v2, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 184
    iget-object v1, p1, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iget v2, p0, Lorg/jbox2d/dynamics/joints/RopeJoint;->m_indexB:I

    aget-object v1, v1, v2

    iput v0, v1, Lorg/jbox2d/dynamics/contacts/Velocity;->w:F

    .line 185
    return-void
.end method