Island.smali

.class public Lorg/jbox2d/dynamics/Island;
.super Ljava/lang/Object;
.source "Island.java"


# static fields
.field static final synthetic $assertionsDisabled:Z


# instance fields
.field private final contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

.field private final impulse:Lorg/jbox2d/callbacks/ContactImpulse;

.field public m_bodies:[Lorg/jbox2d/dynamics/Body;

.field public m_bodyCapacity:I

.field public m_bodyCount:I

.field public m_contactCapacity:I

.field public m_contactCount:I

.field public m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

.field public m_jointCapacity:I

.field public m_jointCount:I

.field public m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

.field public m_listener:Lorg/jbox2d/callbacks/ContactListener;

.field public m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

.field public m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

.field private final solverData:Lorg/jbox2d/dynamics/SolverData;

.field private final solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

.field private final timer:Lorg/jbox2d/common/Timer;

.field private final toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

.field private final toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;


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

    .prologue
    .line 164
    const-class v0, Lorg/jbox2d/dynamics/Island;

    invoke-virtual {v0}, Ljava/lang/Class;->desiredAssertionStatus()Z

    move-result v0

    if-nez v0, :cond_c

    const/4 v0, 0x1

    :goto_9
    sput-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    return-void

    :cond_c
    const/4 v0, 0x0

    goto :goto_9
.end method

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

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

    .line 236
    new-instance v0, Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-direct {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    .line 237
    new-instance v0, Lorg/jbox2d/common/Timer;

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

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

    .line 238
    new-instance v0, Lorg/jbox2d/dynamics/SolverData;

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

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    .line 239
    new-instance v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    invoke-direct {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    .line 431
    new-instance v0, Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-direct {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    .line 432
    new-instance v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    invoke-direct {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    .line 582
    new-instance v0, Lorg/jbox2d/callbacks/ContactImpulse;

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

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->impulse:Lorg/jbox2d/callbacks/ContactImpulse;

    .line 185
    return-void
.end method


# virtual methods
.method public add(Lorg/jbox2d/dynamics/Body;)V
    .registers 4

    .prologue
    .line 566
    sget-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    if-nez v0, :cond_10

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    if-lt v0, v1, :cond_10

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 567
    :cond_10
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

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

    .line 568
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    aput-object p1, v0, v1

    .line 569
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    .line 570
    return-void
.end method

.method public add(Lorg/jbox2d/dynamics/contacts/Contact;)V
    .registers 5

    .prologue
    .line 573
    sget-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    if-nez v0, :cond_10

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_contactCapacity:I

    if-lt v0, v1, :cond_10

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 574
    :cond_10
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    add-int/lit8 v2, v1, 0x1

    iput v2, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    aput-object p1, v0, v1

    .line 575
    return-void
.end method

.method public add(Lorg/jbox2d/dynamics/joints/Joint;)V
    .registers 5

    .prologue
    .line 578
    sget-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    if-nez v0, :cond_10

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_jointCapacity:I

    if-lt v0, v1, :cond_10

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 579
    :cond_10
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    add-int/lit8 v2, v1, 0x1

    iput v2, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    aput-object p1, v0, v1

    .line 580
    return-void
.end method

.method public clear()V
    .registers 2

    .prologue
    const/4 v0, 0x0

    .line 231
    iput v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    .line 232
    iput v0, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    .line 233
    iput v0, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    .line 234
    return-void
.end method

.method public init(IIILorg/jbox2d/callbacks/ContactListener;)V
    .registers 9

    .prologue
    const/4 v3, 0x0

    .line 190
    iput p1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    .line 191
    iput p2, p0, Lorg/jbox2d/dynamics/Island;->m_contactCapacity:I

    .line 192
    iput p3, p0, Lorg/jbox2d/dynamics/Island;->m_jointCapacity:I

    .line 193
    iput v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    .line 194
    iput v3, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    .line 195
    iput v3, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    .line 197
    iput-object p4, p0, Lorg/jbox2d/dynamics/Island;->m_listener:Lorg/jbox2d/callbacks/ContactListener;

    .line 199
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    if-eqz v0, :cond_1a

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    array-length v1, v1

    if-le v0, v1, :cond_20

    .line 200
    :cond_1a
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    new-array v0, v0, [Lorg/jbox2d/dynamics/Body;

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    .line 202
    :cond_20
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    if-eqz v0, :cond_2b

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_jointCapacity:I

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    array-length v1, v1

    if-le v0, v1, :cond_31

    .line 203
    :cond_2b
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_jointCapacity:I

    new-array v0, v0, [Lorg/jbox2d/dynamics/joints/Joint;

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    .line 205
    :cond_31
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    if-eqz v0, :cond_3c

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_contactCapacity:I

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    array-length v1, v1

    if-le v0, v1, :cond_42

    .line 206
    :cond_3c
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_contactCapacity:I

    new-array v0, v0, [Lorg/jbox2d/dynamics/contacts/Contact;

    iput-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    .line 210
    :cond_42
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    if-eqz v0, :cond_4d

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    array-length v1, v1

    if-le v0, v1, :cond_74

    .line 211
    :cond_4d
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    if-nez v0, :cond_71

    new-array v0, v3, [Lorg/jbox2d/dynamics/contacts/Velocity;

    .line 212
    :goto_53
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    new-array v1, v1, [Lorg/jbox2d/dynamics/contacts/Velocity;

    iput-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    .line 213
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    array-length v2, v0

    invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 214
    array-length v0, v0

    :goto_60
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    array-length v1, v1

    if-ge v0, v1, :cond_74

    .line 215
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    new-instance v2, Lorg/jbox2d/dynamics/contacts/Velocity;

    invoke-direct {v2}, Lorg/jbox2d/dynamics/contacts/Velocity;-><init>()V

    aput-object v2, v1, v0

    .line 214
    add-int/lit8 v0, v0, 0x1

    goto :goto_60

    .line 211
    :cond_71
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    goto :goto_53

    .line 220
    :cond_74
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    if-eqz v0, :cond_7f

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    array-length v1, v1

    if-le v0, v1, :cond_a6

    .line 221
    :cond_7f
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    if-nez v0, :cond_a3

    new-array v0, v3, [Lorg/jbox2d/dynamics/contacts/Position;

    .line 222
    :goto_85
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCapacity:I

    new-array v1, v1, [Lorg/jbox2d/dynamics/contacts/Position;

    iput-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    .line 223
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    array-length v2, v0

    invoke-static {v0, v3, v1, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V

    .line 224
    array-length v0, v0

    :goto_92
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    array-length v1, v1

    if-ge v0, v1, :cond_a6

    .line 225
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    new-instance v2, Lorg/jbox2d/dynamics/contacts/Position;

    invoke-direct {v2}, Lorg/jbox2d/dynamics/contacts/Position;-><init>()V

    aput-object v2, v1, v0

    .line 224
    add-int/lit8 v0, v0, 0x1

    goto :goto_92

    .line 221
    :cond_a3
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    goto :goto_85

    .line 228
    :cond_a6
    return-void
.end method

.method public report([Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;)V
    .registers 9

    .prologue
    const/4 v1, 0x0

    .line 585
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_listener:Lorg/jbox2d/callbacks/ContactListener;

    if-nez v0, :cond_6

    .line 601
    :cond_5
    return-void

    :cond_6
    move v0, v1

    .line 589
    :goto_7
    iget v2, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    if-ge v0, v2, :cond_5

    .line 590
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    aget-object v3, v2, v0

    .line 592
    aget-object v4, p1, v0

    .line 593
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->impulse:Lorg/jbox2d/callbacks/ContactImpulse;

    iget v5, v4, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;->pointCount:I

    iput v5, v2, Lorg/jbox2d/callbacks/ContactImpulse;->count:I

    move v2, v1

    .line 594
    :goto_18
    iget v5, v4, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;->pointCount:I

    if-ge v2, v5, :cond_37

    .line 595
    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->impulse:Lorg/jbox2d/callbacks/ContactImpulse;

    iget-object v5, v5, Lorg/jbox2d/callbacks/ContactImpulse;->normalImpulses:[F

    iget-object v6, v4, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;->points:[Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint$VelocityConstraintPoint;

    aget-object v6, v6, v2

    iget v6, v6, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint$VelocityConstraintPoint;->normalImpulse:F

    aput v6, v5, v2

    .line 596
    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->impulse:Lorg/jbox2d/callbacks/ContactImpulse;

    iget-object v5, v5, Lorg/jbox2d/callbacks/ContactImpulse;->tangentImpulses:[F

    iget-object v6, v4, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;->points:[Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint$VelocityConstraintPoint;

    aget-object v6, v6, v2

    iget v6, v6, Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint$VelocityConstraintPoint;->tangentImpulse:F

    aput v6, v5, v2

    .line 594
    add-int/lit8 v2, v2, 0x1

    goto :goto_18

    .line 599
    :cond_37
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_listener:Lorg/jbox2d/callbacks/ContactListener;

    iget-object v4, p0, Lorg/jbox2d/dynamics/Island;->impulse:Lorg/jbox2d/callbacks/ContactImpulse;

    invoke-interface {v2, v3, v4}, Lorg/jbox2d/callbacks/ContactListener;->postSolve(Lorg/jbox2d/dynamics/contacts/Contact;Lorg/jbox2d/callbacks/ContactImpulse;)V

    .line 589
    add-int/lit8 v0, v0, 0x1

    goto :goto_7
.end method

.method public solve(Lorg/jbox2d/dynamics/Profile;Lorg/jbox2d/dynamics/TimeStep;Lorg/jbox2d/common/Vec2;Z)V
    .registers 16

    .prologue
    .line 244
    iget v4, p2, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    .line 247
    const/4 v0, 0x0

    :goto_3
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v0, v1, :cond_b2

    .line 248
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v2, v1, v0

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

    .line 250
    iget-object v5, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

    .line 251
    iget v6, v3, Lorg/jbox2d/common/Sweep;->a:F

    .line 252
    iget-object v7, v2, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

    .line 253
    iget v1, v2, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    .line 256
    iget-object v8, v3, Lorg/jbox2d/common/Sweep;->c0:Lorg/jbox2d/common/Vec2;

    iget-object v9, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

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

    .line 257
    iget v8, v3, Lorg/jbox2d/common/Sweep;->a:F

    iput v8, v3, Lorg/jbox2d/common/Sweep;->a0:F

    .line 259
    iget-object v3, v2, Lorg/jbox2d/dynamics/Body;->m_type:Lorg/jbox2d/dynamics/BodyType;

    sget-object v8, Lorg/jbox2d/dynamics/BodyType;->DYNAMIC:Lorg/jbox2d/dynamics/BodyType;

    if-ne v3, v8, :cond_7a

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

    iget v8, v2, Lorg/jbox2d/dynamics/Body;->m_gravityScale:F

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

    mul-float/2addr v8, v9

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

    iget-object v10, v2, Lorg/jbox2d/dynamics/Body;->m_force:Lorg/jbox2d/common/Vec2;

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

    mul-float/2addr v9, v10

    add-float/2addr v8, v9

    mul-float/2addr v8, v4

    add-float/2addr v3, v8

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

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

    iget v8, v2, Lorg/jbox2d/dynamics/Body;->m_gravityScale:F

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

    mul-float/2addr v8, v9

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

    iget-object v10, v2, Lorg/jbox2d/dynamics/Body;->m_force:Lorg/jbox2d/common/Vec2;

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

    mul-float/2addr v9, v10

    add-float/2addr v8, v9

    mul-float/2addr v8, v4

    add-float/2addr v3, v8

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

    .line 264
    iget v3, v2, Lorg/jbox2d/dynamics/Body;->m_invI:F

    mul-float/2addr v3, v4

    iget v8, v2, Lorg/jbox2d/dynamics/Body;->m_torque:F

    mul-float/2addr v3, v8

    add-float/2addr v1, v3

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

    const/high16 v8, 0x3f800000    # 1.0f

    const/high16 v9, 0x3f800000    # 1.0f

    iget v10, v2, Lorg/jbox2d/dynamics/Body;->m_linearDamping:F

    mul-float/2addr v10, v4

    add-float/2addr v9, v10

    div-float/2addr v8, v9

    mul-float/2addr v3, v8

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

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

    const/high16 v8, 0x3f800000    # 1.0f

    const/high16 v9, 0x3f800000    # 1.0f

    iget v10, v2, Lorg/jbox2d/dynamics/Body;->m_linearDamping:F

    mul-float/2addr v10, v4

    add-float/2addr v9, v10

    div-float/2addr v8, v9

    mul-float/2addr v3, v8

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

    .line 276
    const/high16 v3, 0x3f800000    # 1.0f

    const/high16 v8, 0x3f800000    # 1.0f

    iget v2, v2, Lorg/jbox2d/dynamics/Body;->m_angularDamping:F

    mul-float/2addr v2, v4

    add-float/2addr v2, v8

    div-float v2, v3, v2

    mul-float/2addr v1, v2

    .line 279
    :cond_7a
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

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

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

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

    .line 280
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

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

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

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

    .line 281
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

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

    .line 282
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

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

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

    .line 283
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

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

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

    .line 284
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

    .line 247
    add-int/lit8 v0, v0, 0x1

    goto/16 :goto_3

    .line 287
    :cond_b2
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

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

    .line 290
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    iput-object p2, v0, Lorg/jbox2d/dynamics/SolverData;->step:Lorg/jbox2d/dynamics/TimeStep;

    .line 291
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iput-object v1, v0, Lorg/jbox2d/dynamics/SolverData;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    .line 292
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iput-object v1, v0, Lorg/jbox2d/dynamics/SolverData;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    .line 295
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iput-object p2, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->step:Lorg/jbox2d/dynamics/TimeStep;

    .line 296
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    iput-object v1, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    .line 297
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    iput v1, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->count:I

    .line 298
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iput-object v1, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    .line 299
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iput-object v1, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    .line 301
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->solverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    invoke-virtual {v0, v1}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->init(Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;)V

    .line 303
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->initializeVelocityConstraints()V

    .line 305
    iget-boolean v0, p2, Lorg/jbox2d/dynamics/TimeStep;->warmStarting:Z

    if-eqz v0, :cond_f8

    .line 307
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->warmStart()V

    .line 310
    :cond_f8
    const/4 v0, 0x0

    :goto_f9
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    if-ge v0, v1, :cond_109

    .line 311
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    aget-object v1, v1, v0

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    invoke-virtual {v1, v2}, Lorg/jbox2d/dynamics/joints/Joint;->initVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V

    .line 310
    add-int/lit8 v0, v0, 0x1

    goto :goto_f9

    .line 314
    :cond_109
    iget-object v0, p1, Lorg/jbox2d/dynamics/Profile;->solveInit:Lorg/jbox2d/dynamics/Profile$ProfileEntry;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

    invoke-virtual {v1}, Lorg/jbox2d/common/Timer;->getMilliseconds()F

    move-result v1

    invoke-virtual {v0, v1}, Lorg/jbox2d/dynamics/Profile$ProfileEntry;->accum(F)V

    .line 317
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

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

    .line 319
    const/4 v0, 0x0

    :goto_11a
    iget v1, p2, Lorg/jbox2d/dynamics/TimeStep;->velocityIterations:I

    if-ge v0, v1, :cond_137

    .line 320
    const/4 v1, 0x0

    :goto_11f
    iget v2, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    if-ge v1, v2, :cond_12f

    .line 321
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    aget-object v2, v2, v1

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    invoke-virtual {v2, v3}, Lorg/jbox2d/dynamics/joints/Joint;->solveVelocityConstraints(Lorg/jbox2d/dynamics/SolverData;)V

    .line 320
    add-int/lit8 v1, v1, 0x1

    goto :goto_11f

    .line 324
    :cond_12f
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v1}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->solveVelocityConstraints()V

    .line 319
    add-int/lit8 v0, v0, 0x1

    goto :goto_11a

    .line 328
    :cond_137
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->storeImpulses()V

    .line 329
    iget-object v0, p1, Lorg/jbox2d/dynamics/Profile;->solveVelocity:Lorg/jbox2d/dynamics/Profile$ProfileEntry;

    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

    invoke-virtual {v1}, Lorg/jbox2d/common/Timer;->getMilliseconds()F

    move-result v1

    invoke-virtual {v0, v1}, Lorg/jbox2d/dynamics/Profile$ProfileEntry;->accum(F)V

    .line 332
    const/4 v0, 0x0

    :goto_148
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v0, v1, :cond_1bf

    .line 333
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v1, v1, v0

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

    .line 334
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v1, v1, v0

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

    .line 335
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v1, v1, v0

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

    .line 336
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v1, v1, v0

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

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

    mul-float/2addr v6, v4

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

    mul-float/2addr v7, v4

    .line 342
    mul-float v8, v6, v6

    mul-float v9, v7, v7

    add-float/2addr v8, v9

    sget v9, Lorg/jbox2d/common/Settings;->maxTranslationSquared:F

    cmpl-float v8, v8, v9

    if-lez v8, :cond_18a

    .line 343
    sget v8, Lorg/jbox2d/common/Settings;->maxTranslation:F

    mul-float/2addr v6, v6

    mul-float/2addr v7, v7

    add-float/2addr v6, v7

    invoke-static {v6}, Lorg/jbox2d/common/MathUtils;->sqrt(F)F

    move-result v6

    div-float v6, v8, v6

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

    mul-float/2addr v7, v6

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

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

    mul-float/2addr v6, v7

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

    .line 349
    :cond_18a
    mul-float v6, v4, v1

    .line 350
    mul-float v7, v6, v6

    sget v8, Lorg/jbox2d/common/Settings;->maxRotationSquared:F

    cmpl-float v7, v7, v8

    if-lez v7, :cond_19d

    .line 351
    sget v7, Lorg/jbox2d/common/Settings;->maxRotation:F

    invoke-static {v6}, Lorg/jbox2d/common/MathUtils;->abs(F)F

    move-result v6

    div-float v6, v7, v6

    .line 352
    mul-float/2addr v1, v6

    .line 356
    :cond_19d
    iget v6, v2, Lorg/jbox2d/common/Vec2;->x:F

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

    mul-float/2addr v7, v4

    add-float/2addr v6, v7

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

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

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

    mul-float/2addr v5, v4

    add-float/2addr v5, v6

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

    .line 358
    mul-float v2, v4, v1

    add-float/2addr v2, v3

    .line 360
    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v3, v3, v0

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

    .line 361
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

    .line 332
    add-int/lit8 v0, v0, 0x1

    goto :goto_148

    .line 365
    :cond_1bf
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

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

    .line 366
    const/4 v3, 0x0

    .line 367
    const/4 v0, 0x0

    :goto_1c6
    iget v1, p2, Lorg/jbox2d/dynamics/TimeStep;->positionIterations:I

    if-ge v0, v1, :cond_2c1

    .line 368
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v1}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->solvePositionConstraints()Z

    move-result v5

    .line 370
    const/4 v2, 0x1

    .line 371
    const/4 v1, 0x0

    :goto_1d2
    iget v6, p0, Lorg/jbox2d/dynamics/Island;->m_jointCount:I

    if-ge v1, v6, :cond_1ea

    .line 372
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_joints:[Lorg/jbox2d/dynamics/joints/Joint;

    aget-object v6, v6, v1

    iget-object v7, p0, Lorg/jbox2d/dynamics/Island;->solverData:Lorg/jbox2d/dynamics/SolverData;

    invoke-virtual {v6, v7}, Lorg/jbox2d/dynamics/joints/Joint;->solvePositionConstraints(Lorg/jbox2d/dynamics/SolverData;)Z

    move-result v6

    .line 373
    if-eqz v2, :cond_1e8

    if-eqz v6, :cond_1e8

    const/4 v2, 0x1

    .line 371
    :goto_1e5
    add-int/lit8 v1, v1, 0x1

    goto :goto_1d2

    .line 373
    :cond_1e8
    const/4 v2, 0x0

    goto :goto_1e5

    .line 376
    :cond_1ea
    if-eqz v5, :cond_244

    if-eqz v2, :cond_244

    .line 378
    const/4 v0, 0x1

    .line 384
    :goto_1ef
    const/4 v1, 0x0

    :goto_1f0
    iget v2, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v1, v2, :cond_247

    .line 385
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v2, v2, v1

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

    iget-object v3, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v5, v5, v1

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

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

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

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

    iget-object v3, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v5, v5, v1

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

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

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

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

    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v5, v5, v1

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

    iput v5, v3, Lorg/jbox2d/common/Sweep;->a:F

    .line 389
    iget-object v3, v2, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v5, v5, v1

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

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

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

    .line 390
    iget-object v3, v2, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

    iget-object v5, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v5, v5, v1

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

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

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

    .line 391
    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v3, v3, v1

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

    iput v3, v2, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    .line 392
    invoke-virtual {v2}, Lorg/jbox2d/dynamics/Body;->synchronizeTransform()V

    .line 384
    add-int/lit8 v1, v1, 0x1

    goto :goto_1f0

    .line 367
    :cond_244
    add-int/lit8 v0, v0, 0x1

    goto :goto_1c6

    .line 395
    :cond_247
    iget-object v1, p1, Lorg/jbox2d/dynamics/Profile;->solvePosition:Lorg/jbox2d/dynamics/Profile$ProfileEntry;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->timer:Lorg/jbox2d/common/Timer;

    invoke-virtual {v2}, Lorg/jbox2d/common/Timer;->getMilliseconds()F

    move-result v2

    invoke-virtual {v1, v2}, Lorg/jbox2d/dynamics/Profile$ProfileEntry;->accum(F)V

    .line 397
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->contactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    iget-object v1, v1, Lorg/jbox2d/dynamics/contacts/ContactSolver;->m_velocityConstraints:[Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;

    invoke-virtual {p0, v1}, Lorg/jbox2d/dynamics/Island;->report([Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;)V

    .line 399
    if-eqz p4, :cond_2c0

    .line 400
    const v2, 0x7f7fffff    # Float.MAX_VALUE

    .line 402
    sget v1, Lorg/jbox2d/common/Settings;->linearSleepTolerance:F

    sget v3, Lorg/jbox2d/common/Settings;->linearSleepTolerance:F

    mul-float/2addr v3, v1

    .line 403
    sget v1, Lorg/jbox2d/common/Settings;->angularSleepTolerance:F

    sget v5, Lorg/jbox2d/common/Settings;->angularSleepTolerance:F

    mul-float/2addr v5, v1

    .line 405
    const/4 v1, 0x0

    :goto_269
    iget v6, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v1, v6, :cond_2a8

    .line 406
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v6, v6, v1

    .line 407
    invoke-virtual {v6}, Lorg/jbox2d/dynamics/Body;->getType()Lorg/jbox2d/dynamics/BodyType;

    move-result-object v7

    sget-object v8, Lorg/jbox2d/dynamics/BodyType;->STATIC:Lorg/jbox2d/dynamics/BodyType;

    if-ne v7, v8, :cond_27c

    .line 405
    :goto_279
    add-int/lit8 v1, v1, 0x1

    goto :goto_269

    .line 411
    :cond_27c
    iget v7, v6, Lorg/jbox2d/dynamics/Body;->m_flags:I

    and-int/lit8 v7, v7, 0x4

    if-eqz v7, :cond_297

    iget v7, v6, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    iget v8, v6, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    mul-float/2addr v7, v8

    cmpl-float v7, v7, v5

    if-gtz v7, :cond_297

    iget-object v7, v6, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

    iget-object v8, v6, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

    move-result v7

    cmpl-float v7, v7, v3

    if-lez v7, :cond_29c

    .line 414
    :cond_297
    const/4 v2, 0x0

    iput v2, v6, Lorg/jbox2d/dynamics/Body;->m_sleepTime:F

    .line 415
    const/4 v2, 0x0

    goto :goto_279

    .line 417
    :cond_29c
    iget v7, v6, Lorg/jbox2d/dynamics/Body;->m_sleepTime:F

    add-float/2addr v7, v4

    iput v7, v6, Lorg/jbox2d/dynamics/Body;->m_sleepTime:F

    .line 418
    iget v6, v6, Lorg/jbox2d/dynamics/Body;->m_sleepTime:F

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

    move-result v2

    goto :goto_279

    .line 422
    :cond_2a8
    sget v1, Lorg/jbox2d/common/Settings;->timeToSleep:F

    cmpl-float v1, v2, v1

    if-ltz v1, :cond_2c0

    if-eqz v0, :cond_2c0

    .line 423
    const/4 v0, 0x0

    :goto_2b1
    iget v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v0, v1, :cond_2c0

    .line 424
    iget-object v1, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v1, v1, v0

    .line 425
    const/4 v2, 0x0

    invoke-virtual {v1, v2}, Lorg/jbox2d/dynamics/Body;->setAwake(Z)V

    .line 423
    add-int/lit8 v0, v0, 0x1

    goto :goto_2b1

    .line 429
    :cond_2c0
    return-void

    :cond_2c1
    move v0, v3

    goto/16 :goto_1ef
.end method

.method public solveTOI(Lorg/jbox2d/dynamics/TimeStep;II)V
    .registers 14

    .prologue
    const/4 v1, 0x0

    .line 435
    sget-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    if-nez v0, :cond_f

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-lt p2, v0, :cond_f

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 436
    :cond_f
    sget-boolean v0, Lorg/jbox2d/dynamics/Island;->$assertionsDisabled:Z

    if-nez v0, :cond_1d

    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-lt p3, v0, :cond_1d

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    :cond_1d
    move v0, v1

    .line 439
    :goto_1e
    iget v2, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v0, v2, :cond_83

    .line 440
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

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

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

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

    iget-object v3, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

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

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

    .line 441
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

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

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

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

    iget-object v3, v3, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

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

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

    .line 442
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, v0

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

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

    iget v3, v3, Lorg/jbox2d/common/Sweep;->a:F

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

    .line 443
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

    iget-object v3, v3, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

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

    .line 444
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

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

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

    iget-object v3, v3, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

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

    .line 445
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v2, v2, v0

    iget-object v3, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v3, v3, v0

    iget v3, v3, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

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

    .line 439
    add-int/lit8 v0, v0, 0x1

    goto :goto_1e

    .line 448
    :cond_83
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    iput-object v2, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->contacts:[Lorg/jbox2d/dynamics/contacts/Contact;

    .line 449
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget v2, p0, Lorg/jbox2d/dynamics/Island;->m_contactCount:I

    iput v2, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->count:I

    .line 450
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iput-object p1, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->step:Lorg/jbox2d/dynamics/TimeStep;

    .line 451
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    iput-object v2, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->positions:[Lorg/jbox2d/dynamics/contacts/Position;

    .line 452
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    iput-object v2, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;->velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    .line 453
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->toiSolverDef:Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;

    invoke-virtual {v0, v2}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->init(Lorg/jbox2d/dynamics/contacts/ContactSolver$ContactSolverDef;)V

    move v0, v1

    .line 456
    :goto_a7
    iget v2, p1, Lorg/jbox2d/dynamics/TimeStep;->positionIterations:I

    if-ge v0, v2, :cond_b3

    .line 457
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v2, p2, p3}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->solveTOIPositionConstraints(II)Z

    move-result v2

    .line 458
    if-eqz v2, :cond_116

    .line 496
    :cond_b3
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v0, v0, p2

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

    iget-object v0, v0, Lorg/jbox2d/common/Sweep;->c0:Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, p2

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

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

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

    .line 497
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v0, v0, p2

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

    iget-object v0, v0, Lorg/jbox2d/common/Sweep;->c0:Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, p2

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

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

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

    .line 498
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v0, v0, p2

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

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, p2

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

    iput v2, v0, Lorg/jbox2d/common/Sweep;->a0:F

    .line 499
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v0, v0, p3

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

    iget-object v0, v0, Lorg/jbox2d/common/Sweep;->c0:Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, p3

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

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

    .line 500
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v0, v0, p3

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

    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v2, v2, p3

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

    iput v2, v0, Lorg/jbox2d/common/Sweep;->a0:F

    .line 504
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->initializeVelocityConstraints()V

    move v0, v1

    .line 507
    :goto_10a
    iget v2, p1, Lorg/jbox2d/dynamics/TimeStep;->velocityIterations:I

    if-ge v0, v2, :cond_119

    .line 508
    iget-object v2, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    invoke-virtual {v2}, Lorg/jbox2d/dynamics/contacts/ContactSolver;->solveVelocityConstraints()V

    .line 507
    add-int/lit8 v0, v0, 0x1

    goto :goto_10a

    .line 456
    :cond_116
    add-int/lit8 v0, v0, 0x1

    goto :goto_a7

    .line 514
    :cond_119
    iget v2, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    .line 517
    :goto_11b
    iget v0, p0, Lorg/jbox2d/dynamics/Island;->m_bodyCount:I

    if-ge v1, v0, :cond_1dd

    .line 518
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v0, v0, v1

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

    .line 519
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v0, v0, v1

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

    .line 520
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v0, v0, v1

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

    .line 521
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v0, v0, v1

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

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

    mul-float/2addr v6, v2

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

    mul-float/2addr v7, v2

    .line 526
    mul-float v8, v6, v6

    mul-float v9, v7, v7

    add-float/2addr v8, v9

    sget v9, Lorg/jbox2d/common/Settings;->maxTranslationSquared:F

    cmpl-float v8, v8, v9

    if-lez v8, :cond_156

    .line 527
    sget v8, Lorg/jbox2d/common/Settings;->maxTranslation:F

    mul-float/2addr v6, v6

    mul-float/2addr v7, v7

    add-float/2addr v6, v7

    invoke-static {v6}, Lorg/jbox2d/common/MathUtils;->sqrt(F)F

    move-result v6

    div-float v6, v8, v6

    .line 530
    invoke-virtual {v5, v6}, Lorg/jbox2d/common/Vec2;->mulLocal(F)Lorg/jbox2d/common/Vec2;

    .line 533
    :cond_156
    mul-float v6, v2, v0

    .line 534
    mul-float v7, v6, v6

    sget v8, Lorg/jbox2d/common/Settings;->maxRotationSquared:F

    cmpl-float v7, v7, v8

    if-lez v7, :cond_169

    .line 535
    sget v7, Lorg/jbox2d/common/Settings;->maxRotation:F

    invoke-static {v6}, Lorg/jbox2d/common/MathUtils;->abs(F)F

    move-result v6

    div-float v6, v7, v6

    .line 536
    mul-float/2addr v0, v6

    .line 540
    :cond_169
    iget v6, v3, Lorg/jbox2d/common/Vec2;->x:F

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

    mul-float/2addr v7, v2

    add-float/2addr v6, v7

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

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

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

    mul-float/2addr v7, v2

    add-float/2addr v6, v7

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

    .line 542
    mul-float v6, v2, v0

    add-float/2addr v4, v6

    .line 544
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v6, v6, v1

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

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

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

    .line 545
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v6, v6, v1

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

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

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

    .line 546
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_positions:[Lorg/jbox2d/dynamics/contacts/Position;

    aget-object v6, v6, v1

    iput v4, v6, Lorg/jbox2d/dynamics/contacts/Position;->a:F

    .line 547
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v6, v6, v1

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

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

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

    .line 548
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v6, v6, v1

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

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

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

    .line 549
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_velocities:[Lorg/jbox2d/dynamics/contacts/Velocity;

    aget-object v6, v6, v1

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

    .line 552
    iget-object v6, p0, Lorg/jbox2d/dynamics/Island;->m_bodies:[Lorg/jbox2d/dynamics/Body;

    aget-object v6, v6, v1

    .line 553
    iget-object v7, v6, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;

    iget-object v7, v7, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

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

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

    .line 554
    iget-object v7, v6, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;

    iget-object v7, v7, Lorg/jbox2d/common/Sweep;->c:Lorg/jbox2d/common/Vec2;

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

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

    .line 555
    iget-object v3, v6, Lorg/jbox2d/dynamics/Body;->m_sweep:Lorg/jbox2d/common/Sweep;

    iput v4, v3, Lorg/jbox2d/common/Sweep;->a:F

    .line 556
    iget-object v3, v6, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

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

    .line 557
    iget-object v3, v6, Lorg/jbox2d/dynamics/Body;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

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

    .line 558
    iput v0, v6, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    .line 559
    invoke-virtual {v6}, Lorg/jbox2d/dynamics/Body;->synchronizeTransform()V

    .line 517
    add-int/lit8 v1, v1, 0x1

    goto/16 :goto_11b

    .line 562
    :cond_1dd
    iget-object v0, p0, Lorg/jbox2d/dynamics/Island;->toiContactSolver:Lorg/jbox2d/dynamics/contacts/ContactSolver;

    iget-object v0, v0, Lorg/jbox2d/dynamics/contacts/ContactSolver;->m_velocityConstraints:[Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;

    invoke-virtual {p0, v0}, Lorg/jbox2d/dynamics/Island;->report([Lorg/jbox2d/dynamics/contacts/ContactVelocityConstraint;)V

    .line 563
    return-void
.end method