ParticleSystem.smali

.class public Lorg/jbox2d/particle/ParticleSystem;
.super Ljava/lang/Object;
.source "ParticleSystem.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lorg/jbox2d/particle/ParticleSystem$1;,
        Lorg/jbox2d/particle/ParticleSystem$Test;,
        Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;,
        Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;,
        Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;,
        Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;,
        Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;,
        Lorg/jbox2d/particle/ParticleSystem$Triad;,
        Lorg/jbox2d/particle/ParticleSystem$Pair;,
        Lorg/jbox2d/particle/ParticleSystem$Proxy;,
        Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;,
        Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;,
        Lorg/jbox2d/particle/ParticleSystem$NewIndices;
    }
.end annotation


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

.field private static final k_noPressureFlags:I = 0x40

.field private static final k_pairFlags:I = 0x8

.field private static final k_triadFlags:I = 0x10

.field static final tagBits:I = 0x1f

.field static final xMask:I = 0xfff

.field static final xOffset:J = 0x40000L

.field static final xScale:J = 0x80L

.field static final xShift:I = 0x7

.field static final xTruncBits:I = 0xc

.field static final yMask:I = 0xfff

.field static final yOffset:J = 0x800L

.field static final yShift:I = 0x13

.field static final yTruncBits:I = 0xc


# instance fields
.field private createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

.field private final dpcallback:Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

.field m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

.field m_accumulationBuffer:[F

.field m_allGroupFlags:I

.field m_allParticleFlags:I

.field public m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

.field m_bodyContactCapacity:I

.field public m_bodyContactCount:I

.field public m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<",
            "Lorg/jbox2d/particle/ParticleColor;",
            ">;"
        }
    .end annotation
.end field

.field m_colorMixingStrength:F

.field public m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

.field m_contactCapacity:I

.field public m_contactCount:I

.field m_count:I

.field m_dampingStrength:F

.field m_density:F

.field m_depthBuffer:[F

.field m_ejectionStrength:F

.field m_elasticStrength:F

.field m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

.field m_gravityScale:F

.field m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

.field m_groupCount:I

.field m_groupList:Lorg/jbox2d/particle/ParticleGroup;

.field m_internalAllocatedCapacity:I

.field m_inverseDensity:F

.field m_inverseDiameter:F

.field m_maxCount:I

.field m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

.field m_pairCapacity:I

.field m_pairCount:I

.field m_particleDiameter:F

.field m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<",
            "Lorg/jbox2d/common/Vec2;",
            ">;"
        }
    .end annotation
.end field

.field m_powderStrength:F

.field m_pressureStrength:F

.field m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

.field m_proxyCapacity:I

.field m_proxyCount:I

.field m_springStrength:F

.field m_squaredDiameter:F

.field m_surfaceTensionStrengthA:F

.field m_surfaceTensionStrengthB:F

.field m_timestamp:I

.field m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

.field m_triadCapacity:I

.field m_triadCount:I

.field m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<",
            "Ljava/lang/Object;",
            ">;"
        }
    .end annotation
.end field

.field m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<",
            "Lorg/jbox2d/common/Vec2;",
            ">;"
        }
    .end annotation
.end field

.field m_viscousStrength:F

.field m_world:Lorg/jbox2d/dynamics/World;

.field private final newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

.field private sccallback:Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

.field private final temp:Lorg/jbox2d/collision/AABB;

.field private final temp2:Lorg/jbox2d/collision/AABB;

.field private final tempParticleDef:Lorg/jbox2d/particle/ParticleDef;

.field private final tempRot:Lorg/jbox2d/common/Rot;

.field private final tempTransform:Lorg/jbox2d/common/Transform;

.field private final tempTransform2:Lorg/jbox2d/common/Transform;

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

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

.field private final tempXf:Lorg/jbox2d/common/Transform;

.field private final tempXf2:Lorg/jbox2d/common/Transform;

.field private final ubccallback:Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;


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

    .prologue
    .line 26
    const-class v0, Lorg/jbox2d/particle/ParticleSystem;

    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/particle/ParticleSystem;->$assertionsDisabled:Z

    return-void

    :cond_c
    const/4 v0, 0x0

    goto :goto_9
.end method

.method public constructor <init>(Lorg/jbox2d/dynamics/World;)V
    .registers 8

    .prologue
    const/high16 v5, 0x3f000000    # 0.5f

    const/high16 v4, 0x3e800000    # 0.25f

    const/high16 v3, 0x3f800000    # 1.0f

    const/4 v2, 0x0

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

    .line 253
    new-instance v0, Lorg/jbox2d/collision/AABB;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    .line 254
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->dpcallback:Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

    .line 269
    new-instance v0, Lorg/jbox2d/collision/AABB;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->temp2:Lorg/jbox2d/collision/AABB;

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

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 271
    new-instance v0, Lorg/jbox2d/common/Transform;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempTransform:Lorg/jbox2d/common/Transform;

    .line 272
    new-instance v0, Lorg/jbox2d/common/Transform;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempTransform2:Lorg/jbox2d/common/Transform;

    .line 273
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    .line 275
    new-instance v0, Lorg/jbox2d/particle/ParticleDef;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempParticleDef:Lorg/jbox2d/particle/ParticleDef;

    .line 631
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->ubccallback:Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;

    .line 654
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->sccallback:Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

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

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec2:Lorg/jbox2d/common/Vec2;

    .line 899
    new-instance v0, Lorg/jbox2d/common/Rot;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempRot:Lorg/jbox2d/common/Rot;

    .line 900
    new-instance v0, Lorg/jbox2d/common/Transform;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    .line 901
    new-instance v0, Lorg/jbox2d/common/Transform;

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

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf2:Lorg/jbox2d/common/Transform;

    .line 1397
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    const/4 v1, 0x0

    invoke-direct {v0, v1}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;-><init>(Lorg/jbox2d/particle/ParticleSystem$1;)V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    .line 118
    iput-object p1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    .line 119
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_timestamp:I

    .line 120
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    .line 121
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    .line 122
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    .line 123
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDensity:F

    .line 124
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_gravityScale:F

    .line 125
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    .line 126
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    .line 127
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_squaredDiameter:F

    .line 129
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    .line 130
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    .line 131
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_maxCount:I

    .line 133
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    .line 134
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCapacity:I

    .line 136
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    .line 137
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCapacity:I

    .line 139
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    .line 140
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCapacity:I

    .line 142
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    .line 143
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    .line 145
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    .line 146
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCapacity:I

    .line 148
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    .line 150
    const v0, 0x3d4ccccd    # 0.05f

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pressureStrength:F

    .line 151
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_dampingStrength:F

    .line 152
    iput v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_elasticStrength:F

    .line 153
    iput v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_springStrength:F

    .line 154
    iput v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_viscousStrength:F

    .line 155
    const v0, 0x3dcccccd    # 0.1f

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_surfaceTensionStrengthA:F

    .line 156
    const v0, 0x3e4ccccd    # 0.2f

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_surfaceTensionStrengthB:F

    .line 157
    iput v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_powderStrength:F

    .line 158
    iput v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_ejectionStrength:F

    .line 159
    iput v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorMixingStrength:F

    .line 161
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;-><init>()V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    .line 162
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0, v1}, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;-><init>(Ljava/lang/Class;)V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    .line 163
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Lorg/jbox2d/common/Vec2;

    invoke-direct {v0, v1}, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;-><init>(Ljava/lang/Class;)V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    .line 164
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Lorg/jbox2d/particle/ParticleColor;

    invoke-direct {v0, v1}, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;-><init>(Ljava/lang/Class;)V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    .line 165
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Ljava/lang/Object;

    invoke-direct {v0, v1}, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;-><init>(Ljava/lang/Class;)V

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    .line 166
    return-void
.end method

.method static synthetic access$100([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
    .registers 6

    .prologue
    .line 26
    invoke-static {p0, p1, p2, p3}, Lorg/jbox2d/particle/ParticleSystem;->lowerBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v0

    return v0
.end method

.method static synthetic access$200([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
    .registers 6

    .prologue
    .line 26
    invoke-static {p0, p1, p2, p3}, Lorg/jbox2d/particle/ParticleSystem;->upperBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v0

    return v0
.end method

.method static computeRelativeTag(JII)J
    .registers 8

    .prologue
    .line 50
    shl-int/lit8 v0, p3, 0x13

    int-to-long v0, v0

    add-long/2addr v0, p0

    shl-int/lit8 v2, p2, 0x7

    int-to-long v2, v2

    add-long/2addr v0, v2

    return-wide v0
.end method

.method static computeTag(FF)J
    .registers 8

    .prologue
    .line 46
    const/high16 v0, 0x45000000    # 2048.0f

    add-float/2addr v0, p1

    float-to-long v0, v0

    const/16 v2, 0x13

    shl-long/2addr v0, v2

    const/high16 v2, 0x43000000    # 128.0f

    mul-float/2addr v2, p0

    float-to-long v2, v2

    const-wide/32 v4, 0x40000

    add-long/2addr v2, v4

    add-long/2addr v0, v2

    return-wide v0
.end method

.method static limitCapacity(II)I
    .registers 2

    .prologue
    .line 54
    if-eqz p1, :cond_5

    if-le p0, p1, :cond_5

    :goto_4
    return p1

    :cond_5
    move p1, p0

    goto :goto_4
.end method

.method private static final lowerBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
    .registers 10

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

    .line 1613
    :goto_1
    if-lez p1, :cond_17

    .line 1614
    div-int/lit8 v1, p1, 0x2

    .line 1615
    add-int v2, v0, v1

    .line 1616
    aget-object v3, p0, v2

    iget-wide v4, v3, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    cmp-long v3, v4, p2

    if-gez v3, :cond_15

    .line 1617
    add-int/lit8 v0, v2, 0x1

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

    sub-int/2addr p1, v1

    goto :goto_1

    :cond_15
    move p1, v1

    .line 1620
    goto :goto_1

    .line 1623
    :cond_17
    return v0
.end method

.method static reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;IIZ)[I
    .registers 6

    .prologue
    .line 1763
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_c

    if-gt p2, p1, :cond_c

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 1764
    :cond_c
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->userSuppliedCapacity:I

    invoke-static {v0, v1, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer([IIIIZ)[I

    move-result-object v0

    return-object v0
.end method

.method static reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;IIZ)[Ljava/lang/Object;
    .registers 10
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<TT;>;IIZ)[TT;"
        }
    .end annotation

    .prologue
    .line 1756
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_c

    if-gt p2, p1, :cond_c

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 1757
    :cond_c
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->dataClass:Ljava/lang/Class;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    move v3, p1

    move v4, p2

    move v5, p3

    invoke-static/range {v0 .. v5}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;IIIZ)[Ljava/lang/Object;

    move-result-object v0

    return-object v0
.end method

.method private static final upperBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I
    .registers 10

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

    .line 1629
    :goto_1
    if-lez p1, :cond_17

    .line 1630
    div-int/lit8 v1, p1, 0x2

    .line 1631
    add-int v2, v0, v1

    .line 1632
    aget-object v3, p0, v2

    iget-wide v4, v3, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    cmp-long v3, v4, p2

    if-gtz v3, :cond_15

    .line 1633
    add-int/lit8 v0, v2, 0x1

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

    sub-int/2addr p1, v1

    goto :goto_1

    :cond_15
    move p1, v1

    .line 1636
    goto :goto_1

    .line 1639
    :cond_17
    return v0
.end method


# virtual methods
.method RotateBuffer(III)V
    .registers 9

    .prologue
    const/4 v1, 0x0

    .line 1402
    if-eq p1, p2, :cond_5

    if-ne p2, p3, :cond_6

    .line 1462
    :cond_5
    return-void

    .line 1405
    :cond_6
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iput p1, v0, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->start:I

    .line 1406
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iput p2, v0, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->mid:I

    .line 1407
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iput p3, v0, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->end:I

    .line 1409
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([IIII)V

    .line 1410
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([Ljava/lang/Object;III)V

    .line 1411
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([Ljava/lang/Object;III)V

    .line 1412
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([Ljava/lang/Object;III)V

    .line 1413
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    if-eqz v0, :cond_35

    .line 1414
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([FIII)V

    .line 1416
    :cond_35
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-eqz v0, :cond_42

    .line 1417
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([Ljava/lang/Object;III)V

    .line 1419
    :cond_42
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-eqz v0, :cond_4f

    .line 1420
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-static {v0, p1, p2, p3}, Lorg/jbox2d/common/BufferUtils;->rotate([Ljava/lang/Object;III)V

    :cond_4f
    move v0, v1

    .line 1424
    :goto_50
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v0, v2, :cond_65

    .line 1425
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v2, v2, v0

    .line 1426
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

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

    goto :goto_50

    :cond_65
    move v0, v1

    .line 1430
    :goto_66
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v2, :cond_85

    .line 1431
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v0

    .line 1432
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1433
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleContact;->indexB:I

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

    goto :goto_66

    :cond_85
    move v0, v1

    .line 1437
    :goto_86
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v0, v2, :cond_9b

    .line 1438
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v2, v2, v0

    .line 1439
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

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

    goto :goto_86

    :cond_9b
    move v0, v1

    .line 1443
    :goto_9c
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    if-ge v0, v2, :cond_bb

    .line 1444
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v2, v2, v0

    .line 1445
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    .line 1446
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v4, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

    invoke-virtual {v3, v4}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v3

    iput v3, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

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

    goto :goto_9c

    .line 1450
    :cond_bb
    :goto_bb
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    if-ge v1, v0, :cond_e4

    .line 1451
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v0, v0, v1

    .line 1452
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v3, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexA:I

    invoke-virtual {v2, v3}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v2

    iput v2, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexA:I

    .line 1453
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v3, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexB:I

    invoke-virtual {v2, v3}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v2

    iput v2, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexB:I

    .line 1454
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v3, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexC:I

    invoke-virtual {v2, v3}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v2

    iput v2, v0, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexC:I

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

    goto :goto_bb

    .line 1458
    :cond_e4
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    :goto_e6
    if-eqz v0, :cond_5

    .line 1459
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v2, v0, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    invoke-virtual {v1, v2}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v1

    iput v1, v0, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    .line 1460
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->newIndices:Lorg/jbox2d/particle/ParticleSystem$NewIndices;

    iget v2, v0, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

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

    invoke-virtual {v1, v2}, Lorg/jbox2d/particle/ParticleSystem$NewIndices;->getIndex(I)I

    move-result v1

    add-int/lit8 v1, v1, 0x1

    iput v1, v0, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    .line 1458
    invoke-virtual {v0}, Lorg/jbox2d/particle/ParticleGroup;->getNext()Lorg/jbox2d/particle/ParticleGroup;

    move-result-object v0

    goto :goto_e6
.end method

.method public addContact(II)V
    .registers 11

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

    .line 550
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_e

    if-ne p1, p2, :cond_e

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 551
    :cond_e
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v1, v0, p1

    .line 552
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, p2

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

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

    sub-float/2addr v2, v3

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

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

    sub-float v3, v0, v1

    .line 555
    mul-float v0, v2, v2

    mul-float v1, v3, v3

    add-float v4, v0, v1

    .line 557
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_squaredDiameter:F

    cmpg-float v0, v4, v0

    if-gez v0, :cond_90

    .line 558
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCapacity:I

    if-lt v0, v1, :cond_54

    .line 559
    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCapacity:I

    .line 560
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-eqz v0, :cond_91

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    mul-int/lit8 v0, v0, 0x2

    move v1, v0

    .line 562
    :goto_46
    const-class v0, Lorg/jbox2d/particle/ParticleContact;

    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    invoke-static {v0, v6, v5, v1}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;II)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/particle/ParticleContact;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    .line 565
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCapacity:I

    .line 567
    :cond_54
    const/4 v0, 0x0

    cmpl-float v0, v4, v0

    if-eqz v0, :cond_95

    div-float v0, v7, v4

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

    move-result v0

    .line 568
    :goto_5f
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    aget-object v1, v1, v5

    .line 569
    iput p1, v1, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 570
    iput p2, v1, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 571
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v5, v5, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v5, v5, p1

    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v6, v6, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v6, v6, p2

    or-int/2addr v5, v6

    iput v5, v1, Lorg/jbox2d/particle/ParticleContact;->flags:I

    .line 572
    mul-float/2addr v4, v0

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v4, v5

    sub-float v4, v7, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 573
    iget-object v4, v1, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    mul-float/2addr v2, v0

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

    .line 574
    iget-object v1, v1, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    mul-float/2addr v0, v3

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

    .line 575
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    .line 577
    :cond_90
    return-void

    .line 560
    :cond_91
    const/16 v0, 0x100

    move v1, v0

    goto :goto_46

    .line 567
    :cond_95
    const v0, 0x7f7fffff    # Float.MAX_VALUE

    goto :goto_5f
.end method

.method public computeDepthForGroup(Lorg/jbox2d/particle/ParticleGroup;)V
    .registers 16

    .prologue
    const/4 v5, 0x1

    const v4, 0x7f7fffff    # Float.MAX_VALUE

    const/4 v3, 0x0

    const/4 v1, 0x0

    .line 492
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_8
    iget v2, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v2, :cond_13

    .line 493
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aput v3, v2, v0

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

    goto :goto_8

    :cond_13
    move v0, v1

    .line 495
    :goto_14
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v2, :cond_43

    .line 496
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v0

    .line 497
    iget v6, v2, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 498
    iget v7, v2, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 499
    iget v8, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-lt v6, v8, :cond_40

    iget v8, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v6, v8, :cond_40

    iget v8, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-lt v7, v8, :cond_40

    iget v8, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v7, v8, :cond_40

    .line 501
    iget v2, v2, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 502
    iget-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v9, v8, v6

    add-float/2addr v9, v2

    aput v9, v8, v6

    .line 503
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v8, v6, v7

    add-float/2addr v2, v8

    aput v2, v6, v7

    .line 495
    :cond_40
    add-int/lit8 v0, v0, 0x1

    goto :goto_14

    .line 506
    :cond_43
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    invoke-virtual {p0, v0}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer([F)[F

    move-result-object v0

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    .line 507
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_4d
    iget v2, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v2, :cond_66

    .line 508
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v2, v2, v0

    .line 509
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    const v7, 0x3f4ccccd    # 0.8f

    cmpg-float v2, v2, v7

    if-gez v2, :cond_64

    move v2, v3

    :goto_5f
    aput v2, v6, v0

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

    goto :goto_4d

    :cond_64
    move v2, v4

    .line 509
    goto :goto_5f

    .line 511
    :cond_66
    invoke-virtual {p1}, Lorg/jbox2d/particle/ParticleGroup;->getParticleCount()I

    move-result v7

    move v6, v1

    .line 512
    :goto_6b
    if-ge v6, v7, :cond_b3

    move v0, v1

    move v2, v1

    .line 514
    :goto_6f
    iget v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v8, :cond_b1

    .line 515
    iget-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v8, v8, v0

    .line 516
    iget v9, v8, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 517
    iget v10, v8, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 518
    iget v11, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-lt v9, v11, :cond_ae

    iget v11, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v9, v11, :cond_ae

    iget v11, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-lt v10, v11, :cond_ae

    iget v11, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v10, v11, :cond_ae

    .line 520
    const/high16 v11, 0x3f800000    # 1.0f

    iget v8, v8, Lorg/jbox2d/particle/ParticleContact;->weight:F

    sub-float v8, v11, v8

    .line 521
    iget-object v11, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v11, v11, v9

    .line 522
    iget-object v12, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v12, v12, v10

    .line 523
    add-float v13, v12, v8

    .line 524
    add-float/2addr v8, v11

    .line 525
    cmpl-float v11, v11, v13

    if-lez v11, :cond_a5

    .line 526
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aput v13, v2, v9

    move v2, v5

    .line 529
    :cond_a5
    cmpl-float v9, v12, v8

    if-lez v9, :cond_ae

    .line 530
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aput v8, v2, v10

    move v2, v5

    .line 514
    :cond_ae
    add-int/lit8 v0, v0, 0x1

    goto :goto_6f

    .line 535
    :cond_b1
    if-nez v2, :cond_cd

    .line 539
    :cond_b3
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_b5
    iget v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v1, :cond_d6

    .line 540
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v1, v1, v0

    .line 541
    cmpg-float v1, v1, v4

    if-gez v1, :cond_d1

    .line 542
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v2, v1, v0

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    mul-float/2addr v2, v5

    aput v2, v1, v0

    .line 539
    :goto_ca
    add-int/lit8 v0, v0, 0x1

    goto :goto_b5

    .line 512
    :cond_cd
    add-int/lit8 v0, v6, 0x1

    move v6, v0

    goto :goto_6b

    .line 544
    :cond_d1
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aput v3, v1, v0

    goto :goto_ca

    .line 547
    :cond_d6
    return-void
.end method

.method public computeParticleCollisionEnergy()F
    .registers 9

    .prologue
    const/4 v3, 0x0

    .line 1735
    .line 1736
    const/4 v0, 0x0

    move v1, v0

    move v2, v3

    :goto_4
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_3d

    .line 1737
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v1

    .line 1738
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1739
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1740
    iget-object v6, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1741
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v4

    .line 1742
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v5

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

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

    sub-float/2addr v5, v7

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

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

    sub-float/2addr v0, v4

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

    mul-float/2addr v4, v5

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

    mul-float/2addr v0, v5

    add-float/2addr v0, v4

    .line 1746
    cmpg-float v4, v0, v3

    if-gez v4, :cond_39

    .line 1747
    mul-float/2addr v0, v0

    add-float/2addr v2, v0

    .line 1736
    :cond_39
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_4

    .line 1750
    :cond_3d
    const/high16 v0, 0x3f000000    # 0.5f

    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleMass()F

    move-result v1

    mul-float/2addr v0, v1

    mul-float/2addr v0, v2

    return v0
.end method

.method public createParticle(Lorg/jbox2d/particle/ParticleDef;)I
    .registers 15

    .prologue
    const/16 v12, 0x100

    const/4 v5, 0x1

    const/4 v2, 0x0

    .line 179
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    if-lt v0, v1, :cond_b5

    .line 180
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-eqz v0, :cond_bd

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    mul-int/lit8 v0, v0, 0x2

    .line 181
    :goto_12
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_maxCount:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v0

    .line 182
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->userSuppliedCapacity:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v0

    .line 183
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v0

    .line 184
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v0

    .line 185
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v0

    .line 186
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    invoke-static {v0, v1}, Lorg/jbox2d/particle/ParticleSystem;->limitCapacity(II)I

    move-result v4

    .line 187
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    if-ge v0, v4, :cond_b5

    .line 188
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v1, v3, v4, v2}, Lorg/jbox2d/particle/ParticleSystem;->reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;IIZ)[I

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    .line 190
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v1, v3, v4, v2}, Lorg/jbox2d/particle/ParticleSystem;->reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;IIZ)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 192
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v1, v3, v4, v2}, Lorg/jbox2d/particle/ParticleSystem;->reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;IIZ)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 194
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v0, v2, v1, v4, v2}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer([FIIIZ)[F

    move-result-object v0

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    .line 197
    const-class v0, Lorg/jbox2d/common/Vec2;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static/range {v0 .. v5}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;IIIZ)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    .line 200
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v0, v2, v1, v4, v5}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer([FIIIZ)[F

    move-result-object v0

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    .line 203
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v1, v3, v4, v5}, Lorg/jbox2d/particle/ParticleSystem;->reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;IIZ)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 205
    const-class v6, Lorg/jbox2d/particle/ParticleGroup;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    iget v9, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    move v8, v2

    move v10, v4

    move v11, v2

    invoke-static/range {v6 .. v11}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;IIIZ)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/particle/ParticleGroup;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    .line 208
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {v1, v2, v4, v5}, Lorg/jbox2d/particle/ParticleSystem;->reallocateBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;IIZ)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 210
    iput v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    .line 213
    :cond_b5
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    if-lt v0, v1, :cond_c0

    .line 214
    const/4 v0, -0x1

    .line 242
    :goto_bc
    return v0

    :cond_bd
    move v0, v12

    .line 180
    goto/16 :goto_12

    .line 216
    :cond_c0
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    add-int/lit8 v0, v1, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    .line 217
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    iget v2, p1, Lorg/jbox2d/particle/ParticleDef;->flags:I

    aput v2, v0, v1

    .line 218
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    iget-object v2, p1, Lorg/jbox2d/particle/ParticleDef;->position:Lorg/jbox2d/common/Vec2;

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

    .line 220
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    iget-object v2, p1, Lorg/jbox2d/particle/ParticleDef;->velocity:Lorg/jbox2d/common/Vec2;

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

    .line 221
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    const/4 v2, 0x0

    aput-object v2, v0, v1

    .line 222
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    if-eqz v0, :cond_f6

    .line 223
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    const/4 v2, 0x0

    aput v2, v0, v1

    .line 225
    :cond_f6
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-nez v0, :cond_100

    iget-object v0, p1, Lorg/jbox2d/particle/ParticleDef;->color:Lorg/jbox2d/particle/ParticleColor;

    if-eqz v0, :cond_11d

    .line 226
    :cond_100
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->dataClass:Ljava/lang/Class;

    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v3, v3, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-virtual {p0, v2, v3}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v2

    iput-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 227
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    aget-object v0, v0, v1

    iget-object v2, p1, Lorg/jbox2d/particle/ParticleDef;->color:Lorg/jbox2d/particle/ParticleColor;

    invoke-virtual {v0, v2}, Lorg/jbox2d/particle/ParticleColor;->set(Lorg/jbox2d/particle/ParticleColor;)V

    .line 229
    :cond_11d
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-nez v0, :cond_127

    iget-object v0, p1, Lorg/jbox2d/particle/ParticleDef;->userData:Ljava/lang/Object;

    if-eqz v0, :cond_13f

    .line 230
    :cond_127
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->dataClass:Ljava/lang/Class;

    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v3, v3, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-virtual {p0, v2, v3}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v2

    iput-object v2, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 232
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    iget-object v2, p1, Lorg/jbox2d/particle/ParticleDef;->userData:Ljava/lang/Object;

    aput-object v2, v0, v1

    .line 234
    :cond_13f
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCapacity:I

    if-lt v0, v2, :cond_15d

    .line 235
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCapacity:I

    .line 236
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-eqz v2, :cond_14f

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    mul-int/lit8 v12, v2, 0x2

    .line 237
    :cond_14f
    const-class v2, Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    invoke-static {v2, v3, v0, v12}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;II)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    .line 239
    iput v12, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCapacity:I

    .line 241
    :cond_15d
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    add-int/lit8 v3, v2, 0x1

    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    aget-object v0, v0, v2

    iput v1, v0, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    move v0, v1

    .line 242
    goto/16 :goto_bc
.end method

.method public createParticleGroup(Lorg/jbox2d/particle/ParticleGroupDef;)Lorg/jbox2d/particle/ParticleGroup;
    .registers 16

    .prologue
    .line 278
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleStride()F

    move-result v6

    .line 279
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->tempTransform:Lorg/jbox2d/common/Transform;

    .line 280
    invoke-virtual {v2}, Lorg/jbox2d/common/Transform;->setIdentity()V

    .line 281
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->tempTransform2:Lorg/jbox2d/common/Transform;

    .line 282
    invoke-virtual {v4}, Lorg/jbox2d/common/Transform;->setIdentity()V

    .line 283
    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    .line 284
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->shape:Lorg/jbox2d/collision/shapes/Shape;

    if-eqz v0, :cond_a3

    .line 285
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->tempParticleDef:Lorg/jbox2d/particle/ParticleDef;

    .line 286
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->flags:I

    iput v0, v5, Lorg/jbox2d/particle/ParticleDef;->flags:I

    .line 287
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->color:Lorg/jbox2d/particle/ParticleColor;

    iput-object v0, v5, Lorg/jbox2d/particle/ParticleDef;->color:Lorg/jbox2d/particle/ParticleColor;

    .line 288
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->userData:Ljava/lang/Object;

    iput-object v0, v5, Lorg/jbox2d/particle/ParticleDef;->userData:Ljava/lang/Object;

    .line 289
    iget-object v7, p1, Lorg/jbox2d/particle/ParticleGroupDef;->shape:Lorg/jbox2d/collision/shapes/Shape;

    .line 290
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->position:Lorg/jbox2d/common/Vec2;

    iget v1, p1, Lorg/jbox2d/particle/ParticleGroupDef;->angle:F

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

    .line 291
    iget-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    .line 292
    invoke-virtual {v7}, Lorg/jbox2d/collision/shapes/Shape;->getChildCount()I

    move-result v1

    .line 293
    const/4 v0, 0x0

    :goto_32
    if-ge v0, v1, :cond_45

    .line 294
    if-nez v0, :cond_3c

    .line 295
    invoke-virtual {v7, v8, v2, v0}, Lorg/jbox2d/collision/shapes/Shape;->computeAABB(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/common/Transform;I)V

    .line 293
    :goto_39
    add-int/lit8 v0, v0, 0x1

    goto :goto_32

    .line 297
    :cond_3c
    iget-object v9, p0, Lorg/jbox2d/particle/ParticleSystem;->temp2:Lorg/jbox2d/collision/AABB;

    .line 298
    invoke-virtual {v7, v9, v2, v0}, Lorg/jbox2d/collision/shapes/Shape;->computeAABB(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/common/Transform;I)V

    .line 299
    invoke-virtual {v8, v9}, Lorg/jbox2d/collision/AABB;->combine(Lorg/jbox2d/collision/AABB;)V

    goto :goto_39

    .line 302
    :cond_45
    iget-object v0, v8, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    .line 303
    iget-object v0, v8, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    .line 304
    iget-object v0, v8, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    div-float/2addr v0, v6

    invoke-static {v0}, Lorg/jbox2d/common/MathUtils;->floor(F)I

    move-result v0

    int-to-float v0, v0

    mul-float/2addr v0, v6

    move v1, v0

    :goto_59
    cmpg-float v0, v1, v9

    if-gez v0, :cond_a3

    .line 306
    iget-object v0, v8, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    div-float/2addr v0, v6

    invoke-static {v0}, Lorg/jbox2d/common/MathUtils;->floor(F)I

    move-result v0

    int-to-float v0, v0

    mul-float/2addr v0, v6

    :goto_68
    cmpg-float v11, v0, v10

    if-gez v11, :cond_9f

    .line 308
    iget-object v11, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 309
    iput v0, v11, Lorg/jbox2d/common/Vec2;->x:F

    .line 310
    iput v1, v11, Lorg/jbox2d/common/Vec2;->y:F

    .line 311
    invoke-virtual {v7, v2, v11}, Lorg/jbox2d/collision/shapes/Shape;->testPoint(Lorg/jbox2d/common/Transform;Lorg/jbox2d/common/Vec2;)Z

    move-result v12

    if-eqz v12, :cond_9d

    .line 312
    invoke-static {v4, v11, v11}, Lorg/jbox2d/common/Transform;->mulToOut(Lorg/jbox2d/common/Transform;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 313
    iget-object v12, v5, Lorg/jbox2d/particle/ParticleDef;->position:Lorg/jbox2d/common/Vec2;

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

    iput v13, v12, Lorg/jbox2d/common/Vec2;->x:F

    .line 314
    iget-object v12, v5, Lorg/jbox2d/particle/ParticleDef;->position:Lorg/jbox2d/common/Vec2;

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

    iput v13, v12, Lorg/jbox2d/common/Vec2;->y:F

    .line 315
    iget-object v12, p1, Lorg/jbox2d/particle/ParticleGroupDef;->position:Lorg/jbox2d/common/Vec2;

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

    .line 316
    iget v12, p1, Lorg/jbox2d/particle/ParticleGroupDef;->angularVelocity:F

    iget-object v13, v5, Lorg/jbox2d/particle/ParticleDef;->velocity:Lorg/jbox2d/common/Vec2;

    invoke-static {v12, v11, v13}, Lorg/jbox2d/common/Vec2;->crossToOutUnsafe(FLorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 317
    iget-object v11, v5, Lorg/jbox2d/particle/ParticleDef;->velocity:Lorg/jbox2d/common/Vec2;

    iget-object v12, p1, Lorg/jbox2d/particle/ParticleGroupDef;->linearVelocity:Lorg/jbox2d/common/Vec2;

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

    .line 318
    invoke-virtual {p0, v5}, Lorg/jbox2d/particle/ParticleSystem;->createParticle(Lorg/jbox2d/particle/ParticleDef;)I

    .line 306
    :cond_9d
    add-float/2addr v0, v6

    goto :goto_68

    .line 304
    :cond_9f
    add-float v0, v1, v6

    move v1, v0

    goto :goto_59

    .line 323
    :cond_a3
    iget v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    .line 325
    new-instance v8, Lorg/jbox2d/particle/ParticleGroup;

    invoke-direct {v8}, Lorg/jbox2d/particle/ParticleGroup;-><init>()V

    .line 326
    iput-object p0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_system:Lorg/jbox2d/particle/ParticleSystem;

    .line 327
    iput v3, v8, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    .line 328
    iput v7, v8, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    .line 329
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->groupFlags:I

    iput v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    .line 330
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->strength:F

    iput v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_strength:F

    .line 331
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->userData:Ljava/lang/Object;

    iput-object v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_userData:Ljava/lang/Object;

    .line 332
    iget-object v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_transform:Lorg/jbox2d/common/Transform;

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

    .line 333
    iget-boolean v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->destroyAutomatically:Z

    iput-boolean v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_destroyAutomatically:Z

    .line 334
    const/4 v0, 0x0

    iput-object v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    .line 335
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    iput-object v0, v8, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    .line 336
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    if-eqz v0, :cond_d4

    .line 337
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    iput-object v8, v0, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    .line 339
    :cond_d4
    iput-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    .line 340
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    move v0, v3

    .line 341
    :goto_dd
    if-ge v0, v7, :cond_e6

    .line 342
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    aput-object v8, v1, v0

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

    goto :goto_dd

    .line 345
    :cond_e6
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lorg/jbox2d/particle/ParticleSystem;->updateContacts(Z)V

    .line 346
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->flags:I

    and-int/lit8 v0, v0, 0x8

    if-eqz v0, :cond_15b

    .line 347
    const/4 v0, 0x0

    move v1, v0

    :goto_f2
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_15b

    .line 348
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v9, v0, v1

    .line 349
    iget v0, v9, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 350
    iget v2, v9, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 351
    if-le v0, v2, :cond_19c

    move v4, v0

    move v5, v2

    .line 356
    :goto_102
    if-gt v3, v5, :cond_153

    if-ge v4, v7, :cond_153

    .line 357
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    if-lt v0, v2, :cond_125

    .line 358
    iget v10, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    .line 359
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    if-eqz v0, :cond_157

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    mul-int/lit8 v0, v0, 0x2

    move v2, v0

    .line 361
    :goto_117
    const-class v0, Lorg/jbox2d/particle/ParticleSystem$Pair;

    iget-object v11, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    invoke-static {v0, v11, v10, v2}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;II)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/particle/ParticleSystem$Pair;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    .line 363
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    .line 365
    :cond_125
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    aget-object v2, v0, v2

    .line 366
    iput v5, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    .line 367
    iput v4, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

    .line 368
    iget v0, v9, Lorg/jbox2d/particle/ParticleContact;->flags:I

    iput v0, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->flags:I

    .line 369
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->strength:F

    iput v0, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->strength:F

    .line 370
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v5, v0, v5

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

    invoke-static {v5, v0}, Lorg/jbox2d/common/MathUtils;->distance(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v0

    iput v0, v2, Lorg/jbox2d/particle/ParticleSystem$Pair;->distance:F

    .line 371
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    .line 347
    :cond_153
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_f2

    .line 359
    :cond_157
    const/16 v0, 0x100

    move v2, v0

    goto :goto_117

    .line 375
    :cond_15b
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->flags:I

    and-int/lit8 v0, v0, 0x10

    if-eqz v0, :cond_192

    .line 376
    new-instance v2, Lorg/jbox2d/particle/VoronoiDiagram;

    sub-int v0, v7, v3

    invoke-direct {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;-><init>(I)V

    move v1, v3

    .line 377
    :goto_169
    if-ge v1, v7, :cond_17a

    .line 378
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    invoke-virtual {v2, v0, v1}, Lorg/jbox2d/particle/VoronoiDiagram;->addGenerator(Lorg/jbox2d/common/Vec2;I)V

    .line 377
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_169

    .line 380
    :cond_17a
    const/high16 v0, 0x40000000    # 2.0f

    div-float v0, v6, v0

    invoke-virtual {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;->generate(F)V

    .line 381
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    iput-object p0, v0, Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;->system:Lorg/jbox2d/particle/ParticleSystem;

    .line 382
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    iput-object p1, v0, Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;->def:Lorg/jbox2d/particle/ParticleGroupDef;

    .line 383
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    iput v3, v0, Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;->firstIndex:I

    .line 384
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->createParticleGroupCallback:Lorg/jbox2d/particle/ParticleSystem$CreateParticleGroupCallback;

    invoke-virtual {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;->getNodes(Lorg/jbox2d/particle/VoronoiDiagram$VoronoiDiagramCallback;)V

    .line 386
    :cond_192
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroupDef;->groupFlags:I

    and-int/lit8 v0, v0, 0x1

    if-eqz v0, :cond_19b

    .line 387
    invoke-virtual {p0, v8}, Lorg/jbox2d/particle/ParticleSystem;->computeDepthForGroup(Lorg/jbox2d/particle/ParticleGroup;)V

    .line 390
    :cond_19b
    return-object v8

    :cond_19c
    move v4, v2

    move v5, v0

    goto/16 :goto_102
.end method

.method public destroyParticle(IZ)V
    .registers 6

    .prologue
    .line 246
    const/4 v0, 0x2

    .line 247
    if-eqz p2, :cond_5

    .line 248
    const/16 v0, 0x202

    .line 250
    :cond_5
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v2, v1, p1

    or-int/2addr v0, v2

    aput v0, v1, p1

    .line 251
    return-void
.end method

.method destroyParticleGroup(Lorg/jbox2d/particle/ParticleGroup;)V
    .registers 5

    .prologue
    .line 467
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_e

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    if-gtz v0, :cond_e

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 468
    :cond_e
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_1a

    if-nez p1, :cond_1a

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 470
    :cond_1a
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/World;->getParticleDestructionListener()Lorg/jbox2d/callbacks/ParticleDestructionListener;

    move-result-object v0

    if-eqz v0, :cond_2b

    .line 471
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    invoke-virtual {v0}, Lorg/jbox2d/dynamics/World;->getParticleDestructionListener()Lorg/jbox2d/callbacks/ParticleDestructionListener;

    move-result-object v0

    invoke-interface {v0, p1}, Lorg/jbox2d/callbacks/ParticleDestructionListener;->sayGoodbye(Lorg/jbox2d/particle/ParticleGroup;)V

    .line 474
    :cond_2b
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_2d
    iget v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v1, :cond_39

    .line 475
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    const/4 v2, 0x0

    aput-object v2, v1, v0

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

    goto :goto_2d

    .line 478
    :cond_39
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    if-eqz v0, :cond_43

    .line 479
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    iget-object v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    .line 481
    :cond_43
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    if-eqz v0, :cond_4d

    .line 482
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    iget-object v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleGroup;->m_prev:Lorg/jbox2d/particle/ParticleGroup;

    .line 484
    :cond_4d
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    if-ne p1, v0, :cond_55

    .line 485
    iget-object v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_next:Lorg/jbox2d/particle/ParticleGroup;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    .line 488
    :cond_55
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

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

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    .line 489
    return-void
.end method

.method public destroyParticlesInGroup(Lorg/jbox2d/particle/ParticleGroup;Z)V
    .registers 5

    .prologue
    .line 264
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_2
    iget v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v1, :cond_c

    .line 265
    invoke-virtual {p0, v0, p2}, Lorg/jbox2d/particle/ParticleSystem;->destroyParticle(IZ)V

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

    goto :goto_2

    .line 267
    :cond_c
    return-void
.end method

.method public destroyParticlesInShape(Lorg/jbox2d/collision/shapes/Shape;Lorg/jbox2d/common/Transform;Z)I
    .registers 7

    .prologue
    .line 257
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->dpcallback:Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

    invoke-virtual {v0, p0, p1, p2, p3}, Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;->init(Lorg/jbox2d/particle/ParticleSystem;Lorg/jbox2d/collision/shapes/Shape;Lorg/jbox2d/common/Transform;Z)V

    .line 258
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    const/4 v1, 0x0

    invoke-virtual {p1, v0, p2, v1}, Lorg/jbox2d/collision/shapes/Shape;->computeAABB(Lorg/jbox2d/collision/AABB;Lorg/jbox2d/common/Transform;I)V

    .line 259
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->dpcallback:Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    invoke-virtual {v0, v1, v2}, Lorg/jbox2d/dynamics/World;->queryAABB(Lorg/jbox2d/callbacks/ParticleQueryCallback;Lorg/jbox2d/collision/AABB;)V

    .line 260
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->dpcallback:Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;

    iget v0, v0, Lorg/jbox2d/particle/ParticleSystem$DestroyParticlesInShapeCallback;->destroyed:I

    return v0
.end method

.method getCriticalPressure(Lorg/jbox2d/dynamics/TimeStep;)F
    .registers 4

    .prologue
    .line 1509
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocitySquared(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v1

    mul-float/2addr v0, v1

    return v0
.end method

.method getCriticalVelocity(Lorg/jbox2d/dynamics/TimeStep;)F
    .registers 4

    .prologue
    .line 1500
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

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

    mul-float/2addr v0, v1

    return v0
.end method

.method getCriticalVelocitySquared(Lorg/jbox2d/dynamics/TimeStep;)F
    .registers 3

    .prologue
    .line 1504
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocity(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v0

    .line 1505
    mul-float/2addr v0, v0

    return v0
.end method

.method public getParticleColorBuffer()[Lorg/jbox2d/particle/ParticleColor;
    .registers 4

    .prologue
    .line 1538
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Lorg/jbox2d/particle/ParticleColor;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-virtual {p0, v1, v2}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 1539
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    return-object v0
.end method

.method public getParticleCount()I
    .registers 2

    .prologue
    .line 1603
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    return v0
.end method

.method public getParticleDamping()F
    .registers 2

    .prologue
    .line 1492
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_dampingStrength:F

    return v0
.end method

.method public getParticleDensity()F
    .registers 2

    .prologue
    .line 1476
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    return v0
.end method

.method public getParticleFlagsBuffer()[I
    .registers 2

    .prologue
    .line 1526
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    return-object v0
.end method

.method public getParticleGravityScale()F
    .registers 2

    .prologue
    .line 1484
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_gravityScale:F

    return v0
.end method

.method public getParticleGroupBuffer()[Lorg/jbox2d/particle/ParticleGroup;
    .registers 2

    .prologue
    .line 1591
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    return-object v0
.end method

.method public getParticleGroupCount()I
    .registers 2

    .prologue
    .line 1595
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupCount:I

    return v0
.end method

.method public getParticleGroupList()[Lorg/jbox2d/particle/ParticleGroup;
    .registers 2

    .prologue
    .line 1599
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    return-object v0
.end method

.method getParticleInvMass()F
    .registers 3

    .prologue
    .line 1522
    const v0, 0x3fe38e32

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDensity:F

    mul-float/2addr v0, v1

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v0, v1

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v0, v1

    return v0
.end method

.method getParticleMass()F
    .registers 3

    .prologue
    .line 1517
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleStride()F

    move-result v0

    .line 1518
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    mul-float/2addr v1, v0

    mul-float/2addr v0, v1

    return v0
.end method

.method public getParticleMaxCount()I
    .registers 2

    .prologue
    .line 1548
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_maxCount:I

    return v0
.end method

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

    .prologue
    .line 1530
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    return-object v0
.end method

.method public getParticleRadius()F
    .registers 3

    .prologue
    .line 1496
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    const/high16 v1, 0x40000000    # 2.0f

    div-float/2addr v0, v1

    return v0
.end method

.method getParticleStride()F
    .registers 3

    .prologue
    .line 1513
    const/high16 v0, 0x3f400000    # 0.75f

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    mul-float/2addr v0, v1

    return v0
.end method

.method public getParticleUserDataBuffer()[Ljava/lang/Object;
    .registers 4

    .prologue
    .line 1543
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Ljava/lang/Object;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-virtual {p0, v1, v2}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 1544
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    return-object v0
.end method

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

    .prologue
    .line 1534
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    return-object v0
.end method

.method public joinParticleGroups(Lorg/jbox2d/particle/ParticleGroup;Lorg/jbox2d/particle/ParticleGroup;)V
    .registers 12

    .prologue
    const/4 v2, 0x0

    .line 394
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_d

    if-ne p1, p2, :cond_d

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 395
    :cond_d
    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    invoke-virtual {p0, v0, v1, v3}, Lorg/jbox2d/particle/ParticleSystem;->RotateBuffer(III)V

    .line 396
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_26

    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-eq v0, v1, :cond_26

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 397
    :cond_26
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    iget v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iget v3, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    invoke-virtual {p0, v0, v1, v3}, Lorg/jbox2d/particle/ParticleSystem;->RotateBuffer(III)V

    .line 398
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_3f

    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-eq v0, v1, :cond_3f

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 401
    :cond_3f
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    move v1, v2

    :goto_42
    iget v3, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v3, :cond_50

    .line 402
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v3, v3, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v3, v3, v0

    or-int/2addr v1, v3

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

    goto :goto_42

    .line 405
    :cond_50
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lorg/jbox2d/particle/ParticleSystem;->updateContacts(Z)V

    .line 406
    and-int/lit8 v0, v1, 0x8

    if-eqz v0, :cond_d2

    .line 407
    :goto_58
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v2, v0, :cond_d2

    .line 408
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v6, v0, v2

    .line 409
    iget v0, v6, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 410
    iget v3, v6, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 411
    if-le v0, v3, :cond_13f

    move v4, v3

    move v3, v0

    .line 416
    :goto_68
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-gt v0, v4, :cond_cb

    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v4, v0, :cond_cb

    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    if-gt v0, v3, :cond_cb

    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v3, v0, :cond_cb

    .line 418
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    if-lt v0, v5, :cond_97

    .line 419
    iget v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    .line 420
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    if-eqz v0, :cond_ce

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    mul-int/lit8 v0, v0, 0x2

    move v5, v0

    .line 422
    :goto_89
    const-class v0, Lorg/jbox2d/particle/ParticleSystem$Pair;

    iget-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    invoke-static {v0, v8, v7, v5}, Lorg/jbox2d/common/BufferUtils;->reallocateBuffer(Ljava/lang/Class;[Ljava/lang/Object;II)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/particle/ParticleSystem$Pair;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    .line 424
    iput v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCapacity:I

    .line 426
    :cond_97
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    aget-object v5, v0, v5

    .line 427
    iput v4, v5, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    .line 428
    iput v3, v5, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

    .line 429
    iget v0, v6, Lorg/jbox2d/particle/ParticleContact;->flags:I

    iput v0, v5, Lorg/jbox2d/particle/ParticleSystem$Pair;->flags:I

    .line 430
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_strength:F

    iget v6, p2, Lorg/jbox2d/particle/ParticleGroup;->m_strength:F

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

    move-result v0

    iput v0, v5, Lorg/jbox2d/particle/ParticleSystem$Pair;->strength:F

    .line 431
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v4

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v3

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

    move-result v0

    iput v0, v5, Lorg/jbox2d/particle/ParticleSystem$Pair;->distance:F

    .line 432
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    .line 407
    :cond_cb
    add-int/lit8 v2, v2, 0x1

    goto :goto_58

    .line 420
    :cond_ce
    const/16 v0, 0x100

    move v5, v0

    goto :goto_89

    .line 436
    :cond_d2
    and-int/lit8 v0, v1, 0x10

    if-eqz v0, :cond_118

    .line 437
    new-instance v2, Lorg/jbox2d/particle/VoronoiDiagram;

    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iget v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    sub-int/2addr v0, v1

    invoke-direct {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;-><init>(I)V

    .line 438
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    move v1, v0

    :goto_e3
    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v1, v0, :cond_100

    .line 439
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v0, v0, v1

    and-int/lit8 v0, v0, 0x2

    if-nez v0, :cond_fc

    .line 440
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    invoke-virtual {v2, v0, v1}, Lorg/jbox2d/particle/VoronoiDiagram;->addGenerator(Lorg/jbox2d/common/Vec2;I)V

    .line 438
    :cond_fc
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_e3

    .line 443
    :cond_100
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleStride()F

    move-result v0

    const/high16 v1, 0x40000000    # 2.0f

    div-float/2addr v0, v1

    invoke-virtual {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;->generate(F)V

    .line 444
    new-instance v0, Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;

    invoke-direct {v0}, Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;-><init>()V

    .line 445
    iput-object p0, v0, Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;

    .line 446
    iput-object p1, v0, Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;->groupA:Lorg/jbox2d/particle/ParticleGroup;

    .line 447
    iput-object p2, v0, Lorg/jbox2d/particle/ParticleSystem$JoinParticleGroupsCallback;->groupB:Lorg/jbox2d/particle/ParticleGroup;

    .line 448
    invoke-virtual {v2, v0}, Lorg/jbox2d/particle/VoronoiDiagram;->getNodes(Lorg/jbox2d/particle/VoronoiDiagram$VoronoiDiagramCallback;)V

    .line 451
    :cond_118
    iget v0, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    :goto_11a
    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v1, :cond_125

    .line 452
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    aput-object p1, v1, v0

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

    goto :goto_11a

    .line 454
    :cond_125
    iget v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    or-int/2addr v0, v1

    .line 455
    iput v0, p1, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    .line 456
    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iput v1, p1, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    .line 457
    iget v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    iput v1, p2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    .line 458
    invoke-virtual {p0, p2}, Lorg/jbox2d/particle/ParticleSystem;->destroyParticleGroup(Lorg/jbox2d/particle/ParticleGroup;)V

    .line 460
    and-int/lit8 v0, v0, 0x1

    if-eqz v0, :cond_13e

    .line 461
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->computeDepthForGroup(Lorg/jbox2d/particle/ParticleGroup;)V

    .line 463
    :cond_13e
    return-void

    :cond_13f
    move v4, v0

    goto/16 :goto_68
.end method

.method public queryAABB(Lorg/jbox2d/callbacks/ParticleQueryCallback;Lorg/jbox2d/collision/AABB;)V
    .registers 13

    .prologue
    .line 1643
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-nez v0, :cond_5

    .line 1666
    :cond_4
    return-void

    .line 1647
    :cond_5
    iget-object v0, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    .line 1648
    iget-object v0, p2, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    .line 1649
    iget-object v0, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    .line 1650
    iget-object v0, p2, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    .line 1651
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    iget v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v6, v2

    iget v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v7, v3

    invoke-static {v6, v7}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J

    move-result-wide v6

    invoke-static {v0, v1, v6, v7}, Lorg/jbox2d/particle/ParticleSystem;->lowerBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v0

    .line 1654
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    iget v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v7, v4

    iget v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    mul-float/2addr v8, v5

    invoke-static {v7, v8}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J

    move-result-wide v8

    invoke-static {v1, v6, v8, v9}, Lorg/jbox2d/particle/ParticleSystem;->upperBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v6

    move v1, v0

    .line 1657
    :goto_3a
    if-ge v1, v6, :cond_4

    .line 1658
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v0, v0, v1

    iget v7, v0, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    .line 1659
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v7

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

    cmpg-float v8, v2, v8

    if-gez v8, :cond_68

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

    cmpg-float v8, v8, v4

    if-gez v8, :cond_68

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

    cmpg-float v8, v3, v8

    if-gez v8, :cond_68

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

    cmpg-float v0, v0, v5

    if-gez v0, :cond_68

    .line 1661
    invoke-interface {p1, v7}, Lorg/jbox2d/callbacks/ParticleQueryCallback;->reportParticle(I)Z

    move-result v0

    if-eqz v0, :cond_4

    .line 1657
    :cond_68
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_3a
.end method

.method public raycast(Lorg/jbox2d/callbacks/ParticleRaycastCallback;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V
    .registers 20

    .prologue
    .line 1674
    move-object/from16 v0, p0

    iget v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-nez v2, :cond_7

    .line 1732
    :cond_6
    :goto_6
    return-void

    .line 1677
    :cond_7
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    move-object/from16 v0, p0

    iget v3, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    move-object/from16 v0, p0

    iget v4, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    move-object/from16 v0, p2

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

    move-object/from16 v0, p3

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

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

    move-result v5

    mul-float/2addr v4, v5

    const/high16 v5, 0x3f800000    # 1.0f

    sub-float/2addr v4, v5

    move-object/from16 v0, p0

    iget v5, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    move-object/from16 v0, p2

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

    move-object/from16 v0, p3

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

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

    move-result v6

    mul-float/2addr v5, v6

    const/high16 v6, 0x3f800000    # 1.0f

    sub-float/2addr v5, v6

    invoke-static {v4, v5}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J

    move-result-wide v4

    invoke-static {v2, v3, v4, v5}, Lorg/jbox2d/particle/ParticleSystem;->lowerBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v4

    .line 1683
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    move-object/from16 v0, p0

    iget v3, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    move-object/from16 v0, p0

    iget v5, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    move-object/from16 v0, p2

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

    move-object/from16 v0, p3

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

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

    move-result v6

    mul-float/2addr v5, v6

    const/high16 v6, 0x3f800000    # 1.0f

    add-float/2addr v5, v6

    move-object/from16 v0, p0

    iget v6, v0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    move-object/from16 v0, p2

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

    move-object/from16 v0, p3

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

    invoke-static {v7, v8}, Lorg/jbox2d/common/MathUtils;->max(FF)F

    move-result v7

    mul-float/2addr v6, v7

    const/high16 v7, 0x3f800000    # 1.0f

    add-float/2addr v6, v7

    invoke-static {v5, v6}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J

    move-result-wide v6

    invoke-static {v2, v3, v6, v7}, Lorg/jbox2d/particle/ParticleSystem;->upperBound([Lorg/jbox2d/particle/ParticleSystem$Proxy;IJ)I

    move-result v6

    .line 1689
    const/high16 v5, 0x3f800000    # 1.0f

    .line 1693
    move-object/from16 v0, p3

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

    move-object/from16 v0, p2

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

    sub-float v7, v2, v3

    .line 1694
    move-object/from16 v0, p3

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

    move-object/from16 v0, p2

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

    sub-float v8, v2, v3

    .line 1695
    mul-float v2, v7, v7

    mul-float v3, v8, v8

    add-float/2addr v2, v3

    .line 1696
    const/4 v3, 0x0

    cmpl-float v3, v2, v3

    if-nez v3, :cond_13f

    const v2, 0x7f7fffff    # Float.MAX_VALUE

    move v3, v2

    :goto_9b
    move v15, v4

    move v4, v5

    move v5, v15

    .line 1697
    :goto_9e
    if-ge v5, v6, :cond_6

    .line 1698
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v2, v2, v5

    iget v9, v2, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    .line 1699
    move-object/from16 v0, p0

    iget-object v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v2, [Lorg/jbox2d/common/Vec2;

    aget-object v2, v2, v9

    .line 1700
    move-object/from16 v0, p2

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

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

    sub-float/2addr v10, v11

    .line 1701
    move-object/from16 v0, p2

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

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

    sub-float/2addr v11, v2

    .line 1702
    mul-float v2, v10, v7

    mul-float v12, v11, v8

    add-float/2addr v12, v2

    .line 1703
    mul-float v2, v10, v10

    mul-float v13, v11, v11

    add-float/2addr v2, v13

    .line 1704
    mul-float v13, v12, v12

    move-object/from16 v0, p0

    iget v14, v0, Lorg/jbox2d/particle/ParticleSystem;->m_squaredDiameter:F

    sub-float/2addr v2, v14

    mul-float/2addr v2, v3

    sub-float v2, v13, v2

    .line 1705
    const/4 v13, 0x0

    cmpl-float v13, v2, v13

    if-ltz v13, :cond_13d

    .line 1706
    invoke-static {v2}, Lorg/jbox2d/common/MathUtils;->sqrt(F)F

    move-result v13

    .line 1708
    neg-float v2, v12

    sub-float/2addr v2, v13

    div-float/2addr v2, v3

    .line 1709
    cmpl-float v14, v2, v4

    if-lez v14, :cond_ea

    move v2, v4

    .line 1697
    :cond_e5
    :goto_e5
    add-int/lit8 v4, v5, 0x1

    move v5, v4

    move v4, v2

    goto :goto_9e

    .line 1712
    :cond_ea
    const/4 v14, 0x0

    cmpg-float v14, v2, v14

    if-gez v14, :cond_fd

    .line 1713
    neg-float v2, v12

    add-float/2addr v2, v13

    div-float/2addr v2, v3

    .line 1714
    const/4 v12, 0x0

    cmpg-float v12, v2, v12

    if-ltz v12, :cond_13d

    cmpl-float v12, v2, v4

    if-lez v12, :cond_fd

    move v2, v4

    .line 1715
    goto :goto_e5

    .line 1718
    :cond_fd
    move-object/from16 v0, p0

    iget-object v12, v0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 1719
    move-object/from16 v0, p0

    iget-object v13, v0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    mul-float v14, v2, v7

    add-float/2addr v10, v14

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

    .line 1720
    move-object/from16 v0, p0

    iget-object v10, v0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    mul-float v13, v2, v8

    add-float/2addr v11, v13

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

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

    .line 1722
    move-object/from16 v0, p0

    iget-object v10, v0, Lorg/jbox2d/particle/ParticleSystem;->tempVec2:Lorg/jbox2d/common/Vec2;

    .line 1723
    move-object/from16 v0, p2

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

    mul-float v13, v2, v7

    add-float/2addr v11, v13

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

    .line 1724
    move-object/from16 v0, p2

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

    mul-float v13, v2, v8

    add-float/2addr v11, v13

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

    .line 1725
    move-object/from16 v0, p1

    invoke-interface {v0, v9, v10, v12, v2}, Lorg/jbox2d/callbacks/ParticleRaycastCallback;->reportParticle(ILorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;F)F

    move-result v2

    .line 1726
    invoke-static {v4, v2}, Lorg/jbox2d/common/MathUtils;->min(FF)F

    move-result v2

    .line 1727
    const/4 v4, 0x0

    cmpg-float v4, v2, v4

    if-gtz v4, :cond_e5

    goto/16 :goto_6

    :cond_13d
    move v2, v4

    goto :goto_e5

    :cond_13f
    move v3, v2

    goto/16 :goto_9b
.end method

.method requestParticleBuffer([F)[F
    .registers 3

    .prologue
    .line 1784
    if-nez p1, :cond_6

    .line 1785
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    new-array p1, v0, [F

    .line 1787
    :cond_6
    return-object p1
.end method

.method requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;
    .registers 6
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Ljava/lang/Class",
            "<TT;>;[TT;)[TT;"
        }
    .end annotation

    .prologue
    .line 1770
    if-nez p2, :cond_21

    .line 1771
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    invoke-static {p1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Ljava/lang/Object;

    check-cast v0, [Ljava/lang/Object;

    .line 1772
    const/4 v1, 0x0

    :goto_d
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_internalAllocatedCapacity:I

    if-ge v1, v2, :cond_22

    .line 1774
    :try_start_11
    invoke-virtual {p1}, Ljava/lang/Class;->newInstance()Ljava/lang/Object;

    move-result-object v2

    aput-object v2, v0, v1
    :try_end_17
    .catch Ljava/lang/Exception; {:try_start_11 .. :try_end_17} :catch_1a

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

    goto :goto_d

    .line 1775
    :catch_1a
    move-exception v0

    .line 1776
    new-instance v1, Ljava/lang/RuntimeException;

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

    throw v1

    :cond_21
    move-object v0, p2

    .line 1780
    :cond_22
    return-object v0
.end method

.method setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;[Ljava/lang/Object;I)V
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "<T:",
            "Ljava/lang/Object;",
            ">(",
            "Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer",
            "<TT;>;[TT;I)V"
        }
    .end annotation

    .prologue
    .line 1566
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_12

    if-eqz p2, :cond_8

    if-nez p3, :cond_12

    :cond_8
    if-nez p2, :cond_c

    if-eqz p3, :cond_12

    :cond_c
    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 1567
    :cond_12
    iget v0, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    if-eqz v0, :cond_16

    .line 1570
    :cond_16
    iput-object p2, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 1571
    iput p3, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->userSuppliedCapacity:I

    .line 1572
    return-void
.end method

.method setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;[II)V
    .registers 5

    .prologue
    .line 1557
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_12

    if-eqz p2, :cond_8

    if-nez p3, :cond_12

    :cond_8
    if-nez p2, :cond_c

    if-eqz p3, :cond_12

    :cond_c
    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 1558
    :cond_12
    iget v0, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->userSuppliedCapacity:I

    if-eqz v0, :cond_16

    .line 1561
    :cond_16
    iput-object p2, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    .line 1562
    iput p3, p1, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->userSuppliedCapacity:I

    .line 1563
    return-void
.end method

.method public setParticleColorBuffer([Lorg/jbox2d/particle/ParticleColor;I)V
    .registers 4

    .prologue
    .line 1587
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    invoke-virtual {p0, v0, p1, p2}, Lorg/jbox2d/particle/ParticleSystem;->setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;[Ljava/lang/Object;I)V

    .line 1588
    return-void
.end method

.method public setParticleDamping(F)V
    .registers 2

    .prologue
    .line 1488
    iput p1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_dampingStrength:F

    .line 1489
    return-void
.end method

.method public setParticleDensity(F)V
    .registers 4

    .prologue
    .line 1471
    iput p1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    .line 1472
    const/high16 v0, 0x3f800000    # 1.0f

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    div-float/2addr v0, v1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDensity:F

    .line 1473
    return-void
.end method

.method public setParticleFlagsBuffer([II)V
    .registers 4

    .prologue
    .line 1575
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    invoke-virtual {p0, v0, p1, p2}, Lorg/jbox2d/particle/ParticleSystem;->setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;[II)V

    .line 1576
    return-void
.end method

.method public setParticleGravityScale(F)V
    .registers 2

    .prologue
    .line 1480
    iput p1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_gravityScale:F

    .line 1481
    return-void
.end method

.method public setParticleMaxCount(I)V
    .registers 3

    .prologue
    .line 1552
    sget-boolean v0, Lorg/jbox2d/particle/ParticleSystem;->$assertionsDisabled:Z

    if-nez v0, :cond_e

    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-le v0, p1, :cond_e

    new-instance v0, Ljava/lang/AssertionError;

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

    throw v0

    .line 1553
    :cond_e
    iput p1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_maxCount:I

    .line 1554
    return-void
.end method

.method public setParticlePositionBuffer([Lorg/jbox2d/common/Vec2;I)V
    .registers 4

    .prologue
    .line 1579
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    invoke-virtual {p0, v0, p1, p2}, Lorg/jbox2d/particle/ParticleSystem;->setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;[Ljava/lang/Object;I)V

    .line 1580
    return-void
.end method

.method public setParticleRadius(F)V
    .registers 4

    .prologue
    .line 1465
    const/high16 v0, 0x40000000    # 2.0f

    mul-float/2addr v0, p1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    .line 1466
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    mul-float/2addr v0, v1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_squaredDiameter:F

    .line 1467
    const/high16 v0, 0x3f800000    # 1.0f

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    div-float/2addr v0, v1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

    .line 1468
    return-void
.end method

.method public setParticleUserDataBuffer([Ljava/lang/Object;I)V
    .registers 4

    .prologue
    .line 1607
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    invoke-virtual {p0, v0, p1, p2}, Lorg/jbox2d/particle/ParticleSystem;->setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;[Ljava/lang/Object;I)V

    .line 1608
    return-void
.end method

.method public setParticleVelocityBuffer([Lorg/jbox2d/common/Vec2;I)V
    .registers 4

    .prologue
    .line 1583
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    invoke-virtual {p0, v0, p1, p2}, Lorg/jbox2d/particle/ParticleSystem;->setParticleBuffer(Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;[Ljava/lang/Object;I)V

    .line 1584
    return-void
.end method

.method public solve(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 11

    .prologue
    const/4 v1, 0x0

    .line 686
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_timestamp:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_timestamp:I

    .line 687
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-nez v0, :cond_c

    .line 756
    :cond_b
    :goto_b
    return-void

    .line 690
    :cond_c
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    move v0, v1

    .line 691
    :goto_f
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v0, v2, :cond_21

    .line 692
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v3, v3, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v3, v3, v0

    or-int/2addr v2, v3

    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

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

    goto :goto_f

    .line 694
    :cond_21
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x2

    if-eqz v0, :cond_2a

    .line 695
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->solveZombie()V

    .line 697
    :cond_2a
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-eqz v0, :cond_b

    .line 700
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    .line 701
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    :goto_32
    if-eqz v0, :cond_40

    .line 702
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    iget v3, v0, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    or-int/2addr v2, v3

    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    .line 701
    invoke-virtual {v0}, Lorg/jbox2d/particle/ParticleGroup;->getNext()Lorg/jbox2d/particle/ParticleGroup;

    move-result-object v0

    goto :goto_32

    .line 704
    :cond_40
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_gravityScale:F

    mul-float/2addr v0, v2

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    invoke-virtual {v2}, Lorg/jbox2d/dynamics/World;->getGravity()Lorg/jbox2d/common/Vec2;

    move-result-object v2

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

    mul-float v3, v0, v2

    .line 705
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_gravityScale:F

    mul-float/2addr v0, v2

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    invoke-virtual {v2}, Lorg/jbox2d/dynamics/World;->getGravity()Lorg/jbox2d/common/Vec2;

    move-result-object v2

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

    mul-float v4, v0, v2

    .line 706
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocitySquared(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v5

    move v2, v1

    .line 707
    :goto_63
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v2, v0, :cond_a5

    .line 708
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v6, v0, v2

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

    add-float/2addr v0, v3

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

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

    add-float/2addr v0, v4

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

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

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

    mul-float/2addr v0, v7

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

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

    mul-float/2addr v7, v8

    add-float/2addr v0, v7

    .line 712
    cmpl-float v7, v0, v5

    if-lez v7, :cond_9a

    .line 713
    const/4 v7, 0x0

    cmpl-float v7, v0, v7

    if-nez v7, :cond_9e

    const v0, 0x7f7fffff    # Float.MAX_VALUE

    .line 714
    :goto_90
    iget v7, v6, Lorg/jbox2d/common/Vec2;->x:F

    mul-float/2addr v7, v0

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

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

    mul-float/2addr v0, v7

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

    .line 707
    :cond_9a
    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_63

    .line 713
    :cond_9e
    div-float v0, v5, v0

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

    move-result v0

    goto :goto_90

    .line 718
    :cond_a5
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveCollision(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 719
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    and-int/lit8 v0, v0, 0x2

    if-eqz v0, :cond_b1

    .line 720
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveRigid(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 722
    :cond_b1
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x4

    if-eqz v0, :cond_ba

    .line 723
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveWall(Lorg/jbox2d/dynamics/TimeStep;)V

    :cond_ba
    move v2, v1

    .line 725
    :goto_bb
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v2, v0, :cond_e7

    .line 726
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v3, v0, v2

    .line 727
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v2

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

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

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

    mul-float/2addr v5, v6

    add-float/2addr v4, v5

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

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

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

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

    mul-float/2addr v0, v5

    add-float/2addr v0, v4

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

    .line 725
    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_bb

    .line 731
    :cond_e7
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->updateBodyContacts()V

    .line 732
    invoke-virtual {p0, v1}, Lorg/jbox2d/particle/ParticleSystem;->updateContacts(Z)V

    .line 733
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x20

    if-eqz v0, :cond_f6

    .line 734
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveViscous(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 736
    :cond_f6
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x40

    if-eqz v0, :cond_ff

    .line 737
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solvePowder(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 739
    :cond_ff
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit16 v0, v0, 0x80

    if-eqz v0, :cond_108

    .line 740
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveTensile(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 742
    :cond_108
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x10

    if-eqz v0, :cond_111

    .line 743
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveElastic(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 745
    :cond_111
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x8

    if-eqz v0, :cond_11a

    .line 746
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveSpring(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 748
    :cond_11a
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allGroupFlags:I

    and-int/lit8 v0, v0, 0x1

    if-eqz v0, :cond_123

    .line 749
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveSolid(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 751
    :cond_123
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit16 v0, v0, 0x100

    if-eqz v0, :cond_12c

    .line 752
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveColorMixing(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 754
    :cond_12c
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solvePressure(Lorg/jbox2d/dynamics/TimeStep;)V

    .line 755
    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->solveDamping(Lorg/jbox2d/dynamics/TimeStep;)V

    goto/16 :goto_b
.end method

.method public solveCollision(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 13

    .prologue
    const v1, 0x7f7fffff    # Float.MAX_VALUE

    const v0, -0x800001

    .line 657
    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    .line 658
    iget-object v8, v7, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

    .line 659
    iget-object v9, v7, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

    .line 660
    iput v1, v8, Lorg/jbox2d/common/Vec2;->x:F

    .line 661
    iput v1, v8, Lorg/jbox2d/common/Vec2;->y:F

    .line 662
    iput v0, v9, Lorg/jbox2d/common/Vec2;->x:F

    .line 663
    iput v0, v9, Lorg/jbox2d/common/Vec2;->y:F

    .line 664
    const/4 v0, 0x0

    move v1, v0

    :goto_16
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v1, v0, :cond_83

    .line 665
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v3, v0, v1

    .line 666
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

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

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

    .line 669
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

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

    mul-float/2addr v0, v4

    add-float v6, v5, v0

    .line 670
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

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

    mul-float/2addr v0, v3

    add-float v3, v2, v0

    .line 671
    cmpg-float v0, v5, v6

    if-gez v0, :cond_7b

    move v4, v5

    .line 672
    :goto_41
    cmpg-float v0, v2, v3

    if-gez v0, :cond_7d

    move v0, v2

    .line 673
    :goto_46
    iget v10, v8, Lorg/jbox2d/common/Vec2;->x:F

    cmpg-float v10, v10, v4

    if-gez v10, :cond_4e

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

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

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

    cmpg-float v4, v4, v0

    if-gez v4, :cond_58

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

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

    .line 675
    cmpl-float v0, v5, v6

    if-lez v0, :cond_7f

    move v0, v5

    .line 676
    :goto_5f
    cmpl-float v4, v2, v3

    if-lez v4, :cond_81

    .line 677
    :goto_63
    iget v3, v9, Lorg/jbox2d/common/Vec2;->x:F

    cmpl-float v3, v3, v0

    if-lez v3, :cond_6b

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

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

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

    cmpl-float v0, v0, v2

    if-lez v0, :cond_75

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

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

    .line 664
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_16

    :cond_7b
    move v4, v6

    .line 671
    goto :goto_41

    :cond_7d
    move v0, v3

    .line 672
    goto :goto_46

    :cond_7f
    move v0, v6

    .line 675
    goto :goto_5f

    :cond_81
    move v2, v3

    .line 676
    goto :goto_63

    .line 680
    :cond_83
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->sccallback:Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

    iput-object p1, v0, Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;->step:Lorg/jbox2d/dynamics/TimeStep;

    .line 681
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->sccallback:Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

    iput-object p0, v0, Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;->system:Lorg/jbox2d/particle/ParticleSystem;

    .line 682
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->sccallback:Lorg/jbox2d/particle/ParticleSystem$SolveCollisionCallback;

    invoke-virtual {v0, v1, v7}, Lorg/jbox2d/dynamics/World;->queryAABB(Lorg/jbox2d/callbacks/QueryCallback;Lorg/jbox2d/collision/AABB;)V

    .line 683
    return-void
.end method

.method solveColorMixing(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 11

    .prologue
    .line 1169
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    const-class v1, Lorg/jbox2d/particle/ParticleColor;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    invoke-virtual {p0, v1, v2}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v1

    iput-object v1, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    .line 1170
    const/high16 v0, 0x43800000    # 256.0f

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorMixingStrength:F

    mul-float/2addr v0, v1

    float-to-int v2, v0

    .line 1171
    const/4 v0, 0x0

    move v1, v0

    :goto_16
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_97

    .line 1172
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v1

    .line 1173
    iget v3, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1174
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1175
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v0, v0, v3

    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v5, v5, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v5, v5, v4

    and-int/2addr v0, v5

    and-int/lit16 v0, v0, 0x100

    if-eqz v0, :cond_93

    .line 1176
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    aget-object v3, v0, v3

    .line 1177
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    aget-object v0, v0, v4

    .line 1178
    iget-byte v4, v0, Lorg/jbox2d/particle/ParticleColor;->r:B

    iget-byte v5, v3, Lorg/jbox2d/particle/ParticleColor;->r:B

    sub-int/2addr v4, v5

    mul-int/2addr v4, v2

    shr-int/lit8 v4, v4, 0x8

    .line 1179
    iget-byte v5, v0, Lorg/jbox2d/particle/ParticleColor;->g:B

    iget-byte v6, v3, Lorg/jbox2d/particle/ParticleColor;->g:B

    sub-int/2addr v5, v6

    mul-int/2addr v5, v2

    shr-int/lit8 v5, v5, 0x8

    .line 1180
    iget-byte v6, v0, Lorg/jbox2d/particle/ParticleColor;->b:B

    iget-byte v7, v3, Lorg/jbox2d/particle/ParticleColor;->b:B

    sub-int/2addr v6, v7

    mul-int/2addr v6, v2

    shr-int/lit8 v6, v6, 0x8

    .line 1181
    iget-byte v7, v0, Lorg/jbox2d/particle/ParticleColor;->a:B

    iget-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->a:B

    sub-int/2addr v7, v8

    mul-int/2addr v7, v2

    shr-int/lit8 v7, v7, 0x8

    .line 1182
    iget-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->r:B

    add-int/2addr v8, v4

    int-to-byte v8, v8

    iput-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->r:B

    .line 1183
    iget-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->g:B

    add-int/2addr v8, v5

    int-to-byte v8, v8

    iput-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->g:B

    .line 1184
    iget-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->b:B

    add-int/2addr v8, v6

    int-to-byte v8, v8

    iput-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->b:B

    .line 1185
    iget-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->a:B

    add-int/2addr v8, v7

    int-to-byte v8, v8

    iput-byte v8, v3, Lorg/jbox2d/particle/ParticleColor;->a:B

    .line 1186
    iget-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->r:B

    sub-int/2addr v3, v4

    int-to-byte v3, v3

    iput-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->r:B

    .line 1187
    iget-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->g:B

    sub-int/2addr v3, v5

    int-to-byte v3, v3

    iput-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->g:B

    .line 1188
    iget-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->b:B

    sub-int/2addr v3, v6

    int-to-byte v3, v3

    iput-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->b:B

    .line 1189
    iget-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->a:B

    sub-int/2addr v3, v7

    int-to-byte v3, v3

    iput-byte v3, v0, Lorg/jbox2d/particle/ParticleColor;->a:B

    .line 1171
    :cond_93
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_16

    .line 1192
    :cond_97
    return-void
.end method

.method solveDamping(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 16

    .prologue
    const/4 v2, 0x0

    const/4 v13, 0x0

    .line 837
    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_dampingStrength:F

    move v1, v2

    .line 838
    :goto_5
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v1, v0, :cond_97

    .line 839
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v0, v0, v1

    .line 840
    iget v4, v0, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    .line 841
    iget-object v5, v0, Lorg/jbox2d/particle/ParticleBodyContact;->body:Lorg/jbox2d/dynamics/Body;

    .line 842
    iget v6, v0, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F

    .line 843
    iget v7, v0, Lorg/jbox2d/particle/ParticleBodyContact;->mass:F

    .line 844
    iget-object v8, v0, Lorg/jbox2d/particle/ParticleBodyContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 845
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v9, v0, v4

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

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

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

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

    sub-float v10, v0, v10

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

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

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

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

    sub-float v11, v0, v11

    .line 848
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

    .line 850
    iget v4, v5, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    neg-float v4, v4

    mul-float/2addr v4, v11

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

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

    add-float/2addr v4, v11

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

    sub-float/2addr v4, v11

    .line 851
    iget v11, v5, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    mul-float/2addr v10, v11

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

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

    add-float/2addr v10, v11

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

    sub-float/2addr v10, v11

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

    mul-float/2addr v4, v11

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

    mul-float/2addr v10, v11

    add-float/2addr v4, v10

    .line 854
    cmpg-float v10, v4, v13

    if-gez v10, :cond_92

    .line 855
    iget-object v10, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 856
    mul-float v11, v3, v6

    mul-float/2addr v11, v7

    mul-float/2addr v11, v4

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

    mul-float/2addr v11, v12

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

    .line 857
    mul-float/2addr v6, v3

    mul-float/2addr v6, v7

    mul-float/2addr v4, v6

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

    mul-float/2addr v4, v6

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

    .line 858
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleInvMass()F

    move-result v4

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

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

    mul-float/2addr v7, v4

    add-float/2addr v6, v7

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

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

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

    mul-float/2addr v4, v7

    add-float/2addr v4, v6

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

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

    neg-float v0, v0

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

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

    neg-float v0, v0

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

    .line 863
    const/4 v0, 0x1

    invoke-virtual {v5, v10, v9, v0}, Lorg/jbox2d/dynamics/Body;->applyLinearImpulse(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Z)V

    .line 838
    :cond_92
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto/16 :goto_5

    .line 866
    :cond_97
    :goto_97
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v2, v0, :cond_ee

    .line 867
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v2

    .line 868
    iget v1, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 869
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 870
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 871
    iget-object v6, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 872
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v1, v0, v1

    .line 873
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

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

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

    sub-float/2addr v4, v7

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

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

    sub-float/2addr v7, v8

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

    mul-float/2addr v4, v8

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

    mul-float/2addr v7, v8

    add-float/2addr v4, v7

    .line 877
    cmpg-float v7, v4, v13

    if-gez v7, :cond_eb

    .line 878
    mul-float v7, v3, v5

    mul-float/2addr v7, v4

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

    mul-float/2addr v7, v8

    .line 879
    mul-float/2addr v5, v3

    mul-float/2addr v4, v5

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

    mul-float/2addr v4, v5

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

    add-float/2addr v5, v7

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

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

    add-float/2addr v5, v4

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

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

    sub-float/2addr v1, v7

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

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

    sub-float/2addr v1, v4

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

    .line 866
    :cond_eb
    add-int/lit8 v2, v2, 0x1

    goto :goto_97

    .line 886
    :cond_ee
    return-void
.end method

.method solveElastic(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 23

    .prologue
    .line 930
    move-object/from16 v0, p1

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

    move-object/from16 v0, p0

    iget v2, v0, Lorg/jbox2d/particle/ParticleSystem;->m_elasticStrength:F

    mul-float v3, v1, v2

    .line 931
    const/4 v1, 0x0

    move v2, v1

    :goto_c
    move-object/from16 v0, p0

    iget v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    if-ge v2, v1, :cond_15a

    .line 932
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v4, v1, v2

    .line 933
    iget v1, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->flags:I

    and-int/lit8 v1, v1, 0x10

    if-eqz v1, :cond_14b

    .line 934
    iget v5, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexA:I

    .line 935
    iget v6, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexB:I

    .line 936
    iget v7, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexC:I

    .line 937
    iget-object v8, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->pa:Lorg/jbox2d/common/Vec2;

    .line 938
    iget-object v9, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->pb:Lorg/jbox2d/common/Vec2;

    .line 939
    iget-object v10, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->pc:Lorg/jbox2d/common/Vec2;

    .line 940
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v11, v1, v5

    .line 941
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v12, v1, v6

    .line 942
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v13, v1, v7

    .line 943
    const v1, 0x3eaaaaab

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

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

    add-float/2addr v14, v15

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

    add-float/2addr v14, v15

    mul-float/2addr v14, v1

    .line 944
    const v1, 0x3eaaaaab

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

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

    move/from16 v16, v0

    add-float v15, v15, v16

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

    move/from16 v16, v0

    add-float v15, v15, v16

    mul-float/2addr v15, v1

    .line 945
    invoke-static {v8, v11}, Lorg/jbox2d/common/Vec2;->cross(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v1

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

    move-result v16

    add-float v1, v1, v16

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

    move-result v16

    add-float v16, v16, v1

    .line 946
    invoke-static {v8, v11}, Lorg/jbox2d/common/Vec2;->dot(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)F

    move-result v1

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

    move-result v17

    add-float v1, v1, v17

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

    move-result v17

    add-float v17, v17, v1

    .line 947
    mul-float v1, v16, v16

    mul-float v18, v17, v17

    add-float v1, v1, v18

    .line 948
    const/16 v18, 0x0

    cmpl-float v18, v1, v18

    if-nez v18, :cond_150

    const v1, 0x7f7fffff    # Float.MAX_VALUE

    .line 949
    :goto_95
    mul-float v16, v16, v1

    .line 950
    mul-float v1, v1, v17

    .line 951
    iget v4, v4, Lorg/jbox2d/particle/ParticleSystem$Triad;->strength:F

    mul-float/2addr v4, v3

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

    move/from16 v17, v0

    mul-float v17, v17, v1

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

    move/from16 v18, v0

    mul-float v18, v18, v16

    sub-float v17, v17, v18

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

    move/from16 v18, v0

    mul-float v18, v18, v16

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

    mul-float/2addr v8, v1

    add-float v8, v8, v18

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

    move/from16 v18, v0

    mul-float v18, v18, v1

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

    move/from16 v19, v0

    mul-float v19, v19, v16

    sub-float v18, v18, v19

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

    move/from16 v19, v0

    mul-float v19, v19, v16

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

    mul-float/2addr v9, v1

    add-float v9, v9, v19

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

    move/from16 v19, v0

    mul-float v19, v19, v1

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

    move/from16 v20, v0

    mul-float v20, v20, v16

    sub-float v19, v19, v20

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

    move/from16 v20, v0

    mul-float v16, v16, v20

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

    mul-float/2addr v1, v10

    add-float v10, v16, v1

    .line 958
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v5, v1, v5

    .line 959
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v6, v1, v6

    .line 960
    move-object/from16 v0, p0

    iget-object v1, v0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v1, v1, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v1, [Lorg/jbox2d/common/Vec2;

    aget-object v1, v1, v7

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

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

    move/from16 v16, v0

    sub-float v16, v16, v14

    sub-float v16, v17, v16

    mul-float v16, v16, v4

    add-float v7, v7, v16

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

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

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

    sub-float/2addr v11, v15

    sub-float/2addr v8, v11

    mul-float/2addr v8, v4

    add-float/2addr v7, v8

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

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

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

    sub-float/2addr v7, v14

    sub-float v7, v18, v7

    mul-float/2addr v7, v4

    add-float/2addr v5, v7

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

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

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

    sub-float/2addr v7, v15

    sub-float v7, v9, v7

    mul-float/2addr v7, v4

    add-float/2addr v5, v7

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

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

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

    sub-float/2addr v6, v14

    sub-float v6, v19, v6

    mul-float/2addr v6, v4

    add-float/2addr v5, v6

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

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

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

    sub-float/2addr v6, v15

    sub-float v6, v10, v6

    mul-float/2addr v4, v6

    add-float/2addr v4, v5

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

    .line 931
    :cond_14b
    add-int/lit8 v1, v2, 0x1

    move v2, v1

    goto/16 :goto_c

    .line 948
    :cond_150
    const/high16 v18, 0x3f800000    # 1.0f

    div-float v1, v18, v1

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

    move-result v1

    goto/16 :goto_95

    .line 969
    :cond_15a
    return-void
.end method

.method solvePowder(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 14

    .prologue
    const/4 v2, 0x0

    .line 1096
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_powderStrength:F

    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocity(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v1

    mul-float v3, v0, v1

    .line 1097
    const/high16 v4, 0x3e800000    # 0.25f

    move v1, v2

    .line 1098
    :goto_c
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v1, v0, :cond_68

    .line 1099
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v5, v0, v1

    .line 1100
    iget v6, v5, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    .line 1101
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v0, v0, v6

    and-int/lit8 v0, v0, 0x40

    if-eqz v0, :cond_64

    .line 1102
    iget v7, v5, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F

    .line 1103
    cmpl-float v0, v7, v4

    if-lez v0, :cond_64

    .line 1104
    iget-object v8, v5, Lorg/jbox2d/particle/ParticleBodyContact;->body:Lorg/jbox2d/dynamics/Body;

    .line 1105
    iget v9, v5, Lorg/jbox2d/particle/ParticleBodyContact;->mass:F

    .line 1106
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v10, v0, v6

    .line 1107
    iget-object v5, v5, Lorg/jbox2d/particle/ParticleBodyContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1108
    iget-object v11, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 1109
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v6

    .line 1110
    mul-float v6, v3, v9

    sub-float/2addr v7, v4

    mul-float/2addr v6, v7

    .line 1111
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleInvMass()F

    move-result v7

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

    mul-float/2addr v9, v6

    iput v9, v11, Lorg/jbox2d/common/Vec2;->x:F

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

    mul-float/2addr v5, v6

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

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

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

    mul-float/2addr v6, v7

    sub-float/2addr v5, v6

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

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

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

    mul-float/2addr v6, v7

    sub-float/2addr v5, v6

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

    .line 1116
    const/4 v0, 0x1

    invoke-virtual {v8, v11, v10, v0}, Lorg/jbox2d/dynamics/Body;->applyLinearImpulse(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Z)V

    .line 1098
    :cond_64
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_c

    .line 1120
    :cond_68
    :goto_68
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v2, v0, :cond_b1

    .line 1121
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v2

    .line 1122
    iget v1, v0, Lorg/jbox2d/particle/ParticleContact;->flags:I

    and-int/lit8 v1, v1, 0x40

    if-eqz v1, :cond_ae

    .line 1123
    iget v1, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 1124
    cmpl-float v5, v1, v4

    if-lez v5, :cond_ae

    .line 1125
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1126
    iget v6, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1127
    iget-object v7, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1128
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v5, v0, v5

    .line 1129
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v6

    .line 1130
    sub-float/2addr v1, v4

    mul-float/2addr v1, v3

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

    mul-float/2addr v6, v1

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

    mul-float/2addr v1, v7

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

    sub-float/2addr v7, v6

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

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

    sub-float/2addr v7, v1

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

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

    add-float/2addr v5, v6

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

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

    add-float/2addr v1, v5

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

    .line 1120
    :cond_ae
    add-int/lit8 v2, v2, 0x1

    goto :goto_68

    .line 1140
    :cond_b1
    return-void
.end method

.method solvePressure(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 14

    .prologue
    const/4 v7, 0x0

    const/4 v1, 0x0

    .line 761
    move v0, v1

    :goto_3
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v0, v2, :cond_e

    .line 762
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aput v7, v2, v0

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

    goto :goto_3

    :cond_e
    move v0, v1

    .line 764
    :goto_f
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v0, v2, :cond_25

    .line 765
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v2, v2, v0

    .line 766
    iget v3, v2, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    .line 767
    iget v2, v2, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F

    .line 768
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v5, v4, v3

    add-float/2addr v2, v5

    aput v2, v4, v3

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

    goto :goto_f

    :cond_25
    move v0, v1

    .line 770
    :goto_26
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v2, :cond_45

    .line 771
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v0

    .line 772
    iget v3, v2, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 773
    iget v4, v2, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 774
    iget v2, v2, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 775
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v6, v5, v3

    add-float/2addr v6, v2

    aput v6, v5, v3

    .line 776
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v5, v3, v4

    add-float/2addr v2, v5

    aput v2, v3, v4

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

    goto :goto_26

    .line 779
    :cond_45
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_allParticleFlags:I

    and-int/lit8 v0, v0, 0x40

    if-eqz v0, :cond_61

    move v0, v1

    .line 780
    :goto_4c
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v0, v2, :cond_61

    .line 781
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v2, v2, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v2, v2, v0

    and-int/lit8 v2, v2, 0x40

    if-eqz v2, :cond_5e

    .line 782
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aput v7, v2, v0

    .line 780
    :cond_5e
    add-int/lit8 v0, v0, 0x1

    goto :goto_4c

    .line 787
    :cond_61
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pressureStrength:F

    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalPressure(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v2

    mul-float v3, v0, v2

    move v0, v1

    .line 788
    :goto_6a
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v0, v2, :cond_87

    .line 789
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v2, v2, v0

    .line 790
    const/high16 v4, 0x40a00000    # 5.0f

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

    move-result v2

    const/high16 v4, 0x3f800000    # 1.0f

    sub-float/2addr v2, v4

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

    move-result v2

    mul-float/2addr v2, v3

    .line 794
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aput v2, v4, v0

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

    goto :goto_6a

    .line 797
    :cond_87
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_density:F

    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    mul-float/2addr v2, v4

    div-float v4, v0, v2

    move v2, v1

    .line 798
    :goto_91
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v2, v0, :cond_e6

    .line 799
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v0, v0, v2

    .line 800
    iget v5, v0, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    .line 801
    iget-object v6, v0, Lorg/jbox2d/particle/ParticleBodyContact;->body:Lorg/jbox2d/dynamics/Body;

    .line 802
    iget v7, v0, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F

    .line 803
    iget v8, v0, Lorg/jbox2d/particle/ParticleBodyContact;->mass:F

    .line 804
    iget-object v9, v0, Lorg/jbox2d/particle/ParticleBodyContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 805
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v10, v0, v5

    .line 806
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v0, v0, v5

    mul-float v11, v3, v7

    add-float/2addr v0, v11

    .line 807
    iget-object v11, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 808
    mul-float/2addr v7, v4

    mul-float/2addr v7, v8

    mul-float/2addr v0, v7

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

    mul-float/2addr v7, v0

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

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

    mul-float/2addr v0, v7

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

    .line 811
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v5

    .line 812
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleInvMass()F

    move-result v5

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

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

    mul-float/2addr v8, v5

    sub-float/2addr v7, v8

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

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

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

    mul-float/2addr v5, v8

    sub-float v5, v7, v5

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

    .line 815
    const/4 v0, 0x1

    invoke-virtual {v6, v11, v10, v0}, Lorg/jbox2d/dynamics/Body;->applyLinearImpulse(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Z)V

    .line 798
    add-int/lit8 v0, v2, 0x1

    move v2, v0

    goto :goto_91

    .line 817
    :cond_e6
    :goto_e6
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_131

    .line 818
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v1

    .line 819
    iget v2, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 820
    iget v3, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 821
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 822
    iget-object v0, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 823
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v6, v6, v2

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v7, v7, v3

    add-float/2addr v6, v7

    .line 824
    mul-float v7, v4, v5

    mul-float/2addr v7, v6

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

    mul-float/2addr v7, v8

    .line 825
    mul-float/2addr v5, v4

    mul-float/2addr v5, v6

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

    mul-float/2addr v5, v0

    .line 826
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v2, v0, v2

    .line 827
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v3

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

    sub-float/2addr v3, v7

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

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

    sub-float/2addr v3, v5

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

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

    add-float/2addr v2, v7

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

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

    add-float/2addr v2, v5

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

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

    goto :goto_e6

    .line 833
    :cond_131
    return-void
.end method

.method solveRigid(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 8

    .prologue
    .line 904
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    move-object v2, v0

    :goto_3
    if-eqz v2, :cond_ab

    .line 905
    iget v0, v2, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    and-int/lit8 v0, v0, 0x2

    if-eqz v0, :cond_a4

    .line 906
    invoke-virtual {v2}, Lorg/jbox2d/particle/ParticleGroup;->updateStatistics()V

    .line 907
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 908
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec2:Lorg/jbox2d/common/Vec2;

    .line 909
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->tempRot:Lorg/jbox2d/common/Rot;

    .line 910
    iget v4, p1, Lorg/jbox2d/dynamics/TimeStep;->dt:F

    iget v5, v2, Lorg/jbox2d/particle/ParticleGroup;->m_angularVelocity:F

    mul-float/2addr v4, v5

    invoke-virtual {v3, v4}, Lorg/jbox2d/common/Rot;->set(F)Lorg/jbox2d/common/Rot;

    .line 911
    iget-object v4, v2, Lorg/jbox2d/particle/ParticleGroup;->m_center:Lorg/jbox2d/common/Vec2;

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

    .line 912
    iget-object v4, v2, Lorg/jbox2d/particle/ParticleGroup;->m_linearVelocity:Lorg/jbox2d/common/Vec2;

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

    move-result-object v4

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

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

    move-result-object v4

    iget-object v5, v2, Lorg/jbox2d/particle/ParticleGroup;->m_center:Lorg/jbox2d/common/Vec2;

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

    move-result-object v4

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

    .line 913
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v1, v1, Lorg/jbox2d/common/Transform;->p:Lorg/jbox2d/common/Vec2;

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

    .line 914
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v0, v0, Lorg/jbox2d/common/Transform;->q:Lorg/jbox2d/common/Rot;

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

    .line 915
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v1, v2, Lorg/jbox2d/particle/ParticleGroup;->m_transform:Lorg/jbox2d/common/Transform;

    iget-object v3, v2, Lorg/jbox2d/particle/ParticleGroup;->m_transform:Lorg/jbox2d/common/Transform;

    invoke-static {v0, v1, v3}, Lorg/jbox2d/common/Transform;->mulToOut(Lorg/jbox2d/common/Transform;Lorg/jbox2d/common/Transform;Lorg/jbox2d/common/Transform;)V

    .line 916
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf2:Lorg/jbox2d/common/Transform;

    .line 917
    iget-object v0, v3, Lorg/jbox2d/common/Transform;->p:Lorg/jbox2d/common/Vec2;

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

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v4, v4, Lorg/jbox2d/common/Transform;->p:Lorg/jbox2d/common/Vec2;

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

    mul-float/2addr v1, v4

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

    .line 918
    iget-object v0, v3, Lorg/jbox2d/common/Transform;->p:Lorg/jbox2d/common/Vec2;

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

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v4, v4, Lorg/jbox2d/common/Transform;->p:Lorg/jbox2d/common/Vec2;

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

    mul-float/2addr v1, v4

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

    .line 919
    iget-object v0, v3, Lorg/jbox2d/common/Transform;->q:Lorg/jbox2d/common/Rot;

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

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v4, v4, Lorg/jbox2d/common/Transform;->q:Lorg/jbox2d/common/Rot;

    iget v4, v4, Lorg/jbox2d/common/Rot;->s:F

    mul-float/2addr v1, v4

    iput v1, v0, Lorg/jbox2d/common/Rot;->s:F

    .line 920
    iget-object v0, v3, Lorg/jbox2d/common/Transform;->q:Lorg/jbox2d/common/Rot;

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

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->tempXf:Lorg/jbox2d/common/Transform;

    iget-object v4, v4, Lorg/jbox2d/common/Transform;->q:Lorg/jbox2d/common/Rot;

    iget v4, v4, Lorg/jbox2d/common/Rot;->c:F

    const/high16 v5, 0x3f800000    # 1.0f

    sub-float/2addr v4, v5

    mul-float/2addr v1, v4

    iput v1, v0, Lorg/jbox2d/common/Rot;->c:F

    .line 921
    iget v0, v2, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    move v1, v0

    :goto_89
    iget v0, v2, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v1, v0, :cond_a4

    .line 922
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v1

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    invoke-static {v3, v4, v0}, Lorg/jbox2d/common/Transform;->mulToOutUnsafe(Lorg/jbox2d/common/Transform;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 921
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_89

    .line 904
    :cond_a4
    invoke-virtual {v2}, Lorg/jbox2d/particle/ParticleGroup;->getNext()Lorg/jbox2d/particle/ParticleGroup;

    move-result-object v0

    move-object v2, v0

    goto/16 :goto_3

    .line 927
    :cond_ab
    return-void
.end method

.method solveSolid(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 10

    .prologue
    .line 1144
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    invoke-virtual {p0, v0}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer([F)[F

    move-result-object v0

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    .line 1145
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->inv_dt:F

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_ejectionStrength:F

    mul-float v2, v0, v1

    .line 1146
    const/4 v0, 0x0

    move v1, v0

    :goto_10
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_64

    .line 1147
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v1

    .line 1148
    iget v3, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1149
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1150
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    aget-object v5, v5, v3

    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    aget-object v6, v6, v4

    if-eq v5, v6, :cond_60

    .line 1151
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 1152
    iget-object v6, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1153
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v0, v0, v3

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v7, v7, v4

    add-float/2addr v7, v0

    .line 1154
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v3, v0, v3

    .line 1155
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

    .line 1156
    mul-float v4, v2, v7

    mul-float/2addr v4, v5

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

    mul-float/2addr v5, v4

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

    mul-float/2addr v4, v6

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

    sub-float/2addr v6, v5

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

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

    sub-float/2addr v6, v4

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

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

    add-float/2addr v3, v5

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

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

    add-float/2addr v3, v4

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

    .line 1146
    :cond_60
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_10

    .line 1165
    :cond_64
    return-void
.end method

.method solveSpring(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 12

    .prologue
    .line 972
    iget v0, p1, Lorg/jbox2d/dynamics/TimeStep;->inv_dt:F

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_springStrength:F

    mul-float v2, v0, v1

    .line 973
    const/4 v0, 0x0

    move v1, v0

    :goto_8
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    if-ge v1, v0, :cond_7e

    .line 974
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v3, v0, v1

    .line 975
    iget v0, v3, Lorg/jbox2d/particle/ParticleSystem$Pair;->flags:I

    and-int/lit8 v0, v0, 0x8

    if-eqz v0, :cond_7a

    .line 976
    iget v4, v3, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    .line 977
    iget v5, v3, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

    .line 978
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v6, v0, v4

    .line 979
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v5

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

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

    sub-float/2addr v7, v8

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

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

    sub-float v6, v0, v6

    .line 982
    iget v8, v3, Lorg/jbox2d/particle/ParticleSystem$Pair;->distance:F

    .line 983
    mul-float v0, v7, v7

    mul-float v9, v6, v6

    add-float/2addr v0, v9

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

    move-result v0

    .line 984
    const/4 v9, 0x0

    cmpl-float v9, v0, v9

    if-nez v9, :cond_48

    const v0, 0x7f7fffff    # Float.MAX_VALUE

    .line 985
    :cond_48
    iget v3, v3, Lorg/jbox2d/particle/ParticleSystem$Pair;->strength:F

    mul-float/2addr v3, v2

    .line 986
    sub-float v9, v8, v0

    mul-float/2addr v9, v3

    div-float/2addr v9, v0

    mul-float/2addr v7, v9

    .line 987
    sub-float/2addr v8, v0

    mul-float/2addr v3, v8

    div-float v0, v3, v0

    mul-float v3, v0, v6

    .line 988
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v4

    .line 989
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v5

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

    sub-float/2addr v5, v7

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

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

    sub-float/2addr v5, v3

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

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

    add-float/2addr v4, v7

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

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

    add-float/2addr v3, v4

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

    .line 973
    :cond_7a
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_8

    .line 996
    :cond_7e
    return-void
.end method

.method solveTensile(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 14

    .prologue
    const/4 v1, 0x0

    .line 999
    const-class v0, Lorg/jbox2d/common/Vec2;

    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    invoke-virtual {p0, v0, v2}, Lorg/jbox2d/particle/ParticleSystem;->requestParticleBuffer(Ljava/lang/Class;[Ljava/lang/Object;)[Ljava/lang/Object;

    move-result-object v0

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    iput-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    move v0, v1

    .line 1000
    :goto_e
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v0, v2, :cond_21

    .line 1001
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    const/4 v3, 0x0

    aput v3, v2, v0

    .line 1002
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    aget-object v2, v2, v0

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

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

    goto :goto_e

    :cond_21
    move v0, v1

    .line 1004
    :goto_22
    iget v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v2, :cond_75

    .line 1005
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v0

    .line 1006
    iget v3, v2, Lorg/jbox2d/particle/ParticleContact;->flags:I

    and-int/lit16 v3, v3, 0x80

    if-eqz v3, :cond_72

    .line 1007
    iget v3, v2, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1008
    iget v4, v2, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1009
    iget v5, v2, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 1010
    iget-object v2, v2, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1011
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v7, v6, v3

    add-float/2addr v7, v5

    aput v7, v6, v3

    .line 1012
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v7, v6, v4

    add-float/2addr v7, v5

    aput v7, v6, v4

    .line 1013
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    aget-object v3, v6, v3

    .line 1014
    iget-object v6, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    aget-object v4, v6, v4

    .line 1015
    const/high16 v6, 0x3f800000    # 1.0f

    sub-float/2addr v6, v5

    mul-float/2addr v5, v6

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

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

    mul-float/2addr v7, v5

    sub-float/2addr v6, v7

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

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

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

    mul-float/2addr v7, v5

    sub-float/2addr v6, v7

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

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

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

    mul-float/2addr v6, v5

    add-float/2addr v3, v6

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

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

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

    mul-float/2addr v2, v5

    add-float/2addr v2, v3

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

    .line 1004
    :cond_72
    add-int/lit8 v0, v0, 0x1

    goto :goto_22

    .line 1022
    :cond_75
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_surfaceTensionStrengthA:F

    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocity(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v2

    mul-float/2addr v2, v0

    .line 1023
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_surfaceTensionStrengthB:F

    invoke-virtual {p0, p1}, Lorg/jbox2d/particle/ParticleSystem;->getCriticalVelocity(Lorg/jbox2d/dynamics/TimeStep;)F

    move-result v3

    mul-float/2addr v3, v0

    .line 1024
    :goto_83
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v1, v0, :cond_f1

    .line 1025
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v1

    .line 1026
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->flags:I

    and-int/lit16 v4, v4, 0x80

    if-eqz v4, :cond_ee

    .line 1027
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1028
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1029
    iget v6, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 1030
    iget-object v0, v0, Lorg/jbox2d/particle/ParticleContact;->normal:Lorg/jbox2d/common/Vec2;

    .line 1031
    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    aget-object v7, v7, v4

    .line 1032
    iget-object v8, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulation2Buffer:[Lorg/jbox2d/common/Vec2;

    aget-object v8, v8, v5

    .line 1033
    iget-object v9, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v9, v9, v4

    iget-object v10, p0, Lorg/jbox2d/particle/ParticleSystem;->m_accumulationBuffer:[F

    aget v10, v10, v5

    add-float/2addr v9, v10

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

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

    sub-float/2addr v10, v11

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

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

    sub-float v7, v8, v7

    .line 1036
    const/high16 v8, 0x40000000    # 2.0f

    sub-float v8, v9, v8

    mul-float/2addr v8, v2

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

    mul-float/2addr v9, v10

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

    mul-float/2addr v7, v10

    add-float/2addr v7, v9

    mul-float/2addr v7, v3

    add-float/2addr v7, v8

    mul-float/2addr v6, v7

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

    mul-float/2addr v7, v6

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

    mul-float/2addr v6, v0

    .line 1039
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v4

    .line 1040
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v5

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

    sub-float/2addr v5, v7

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

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

    sub-float/2addr v5, v6

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

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

    add-float/2addr v4, v7

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

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

    add-float/2addr v4, v6

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

    .line 1024
    :cond_ee
    add-int/lit8 v1, v1, 0x1

    goto :goto_83

    .line 1047
    :cond_f1
    return-void
.end method

.method solveViscous(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 15

    .prologue
    const/4 v2, 0x0

    .line 1050
    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_viscousStrength:F

    move v1, v2

    .line 1051
    :goto_4
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v1, v0, :cond_8b

    .line 1052
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v0, v0, v1

    .line 1053
    iget v4, v0, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    .line 1054
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v5, v5, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v5, v5, v4

    and-int/lit8 v5, v5, 0x20

    if-eqz v5, :cond_86

    .line 1055
    iget-object v5, v0, Lorg/jbox2d/particle/ParticleBodyContact;->body:Lorg/jbox2d/dynamics/Body;

    .line 1056
    iget v6, v0, Lorg/jbox2d/particle/ParticleBodyContact;->weight:F

    .line 1057
    iget v7, v0, Lorg/jbox2d/particle/ParticleBodyContact;->mass:F

    .line 1058
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v8, v0, v4

    .line 1059
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

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

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

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

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

    sub-float/2addr v4, v9

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

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

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

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

    sub-float/2addr v9, v10

    .line 1062
    iget v10, v5, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    neg-float v10, v10

    mul-float/2addr v9, v10

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

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

    add-float/2addr v9, v10

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

    sub-float/2addr v9, v10

    .line 1063
    iget v10, v5, Lorg/jbox2d/dynamics/Body;->m_angularVelocity:F

    mul-float/2addr v4, v10

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

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

    add-float/2addr v4, v10

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

    sub-float/2addr v4, v10

    .line 1064
    iget-object v10, p0, Lorg/jbox2d/particle/ParticleSystem;->tempVec:Lorg/jbox2d/common/Vec2;

    .line 1065
    invoke-virtual {p0}, Lorg/jbox2d/particle/ParticleSystem;->getParticleInvMass()F

    move-result v11

    .line 1066
    mul-float v12, v3, v7

    mul-float/2addr v12, v6

    mul-float/2addr v9, v12

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

    .line 1067
    mul-float/2addr v7, v3

    mul-float/2addr v6, v7

    mul-float/2addr v4, v6

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

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

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

    mul-float/2addr v6, v11

    add-float/2addr v4, v6

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

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

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

    mul-float/2addr v6, v11

    add-float/2addr v4, v6

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

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

    neg-float v0, v0

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

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

    neg-float v0, v0

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

    .line 1072
    const/4 v0, 0x1

    invoke-virtual {v5, v10, v8, v0}, Lorg/jbox2d/dynamics/Body;->applyLinearImpulse(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Z)V

    .line 1051
    :cond_86
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto/16 :goto_4

    .line 1075
    :cond_8b
    :goto_8b
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v2, v0, :cond_d5

    .line 1076
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v0, v0, v2

    .line 1077
    iget v1, v0, Lorg/jbox2d/particle/ParticleContact;->flags:I

    and-int/lit8 v1, v1, 0x20

    if-eqz v1, :cond_d2

    .line 1078
    iget v1, v0, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1079
    iget v4, v0, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    .line 1080
    iget v5, v0, Lorg/jbox2d/particle/ParticleContact;->weight:F

    .line 1081
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v1, v0, v1

    .line 1082
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

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

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

    sub-float/2addr v4, v6

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

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

    sub-float/2addr v6, v7

    .line 1085
    mul-float v7, v3, v5

    mul-float/2addr v4, v7

    .line 1086
    mul-float/2addr v5, v3

    mul-float/2addr v5, v6

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

    add-float/2addr v6, v4

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

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

    add-float/2addr v6, v5

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

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

    sub-float/2addr v1, v4

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

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

    sub-float/2addr v1, v5

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

    .line 1075
    :cond_d2
    add-int/lit8 v2, v2, 0x1

    goto :goto_8b

    .line 1093
    :cond_d5
    return-void
.end method

.method public solveWall(Lorg/jbox2d/dynamics/TimeStep;)V
    .registers 5

    .prologue
    const/4 v2, 0x0

    .line 889
    const/4 v0, 0x0

    move v1, v0

    :goto_3
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v1, v0, :cond_21

    .line 890
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v0, v0, v1

    and-int/lit8 v0, v0, 0x4

    if-eqz v0, :cond_1d

    .line 891
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

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

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

    .line 889
    :cond_1d
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_3

    .line 896
    :cond_21
    return-void
.end method

.method solveZombie()V
    .registers 11

    .prologue
    const/4 v6, 0x1

    const/4 v2, 0x0

    .line 1196
    .line 1197
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    new-array v8, v0, [I

    move v1, v2

    move v3, v2

    .line 1198
    :goto_8
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v1, v0, :cond_a4

    .line 1199
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v0, v0, v1

    .line 1200
    and-int/lit8 v4, v0, 0x2

    if-eqz v4, :cond_2c

    .line 1201
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    invoke-virtual {v4}, Lorg/jbox2d/dynamics/World;->getParticleDestructionListener()Lorg/jbox2d/callbacks/ParticleDestructionListener;

    move-result-object v4

    .line 1202
    and-int/lit16 v0, v0, 0x200

    if-eqz v0, :cond_25

    if-eqz v4, :cond_25

    .line 1203
    invoke-interface {v4, v1}, Lorg/jbox2d/callbacks/ParticleDestructionListener;->sayGoodbye(I)V

    .line 1205
    :cond_25
    const/4 v0, -0x1

    aput v0, v8, v1

    .line 1198
    :goto_28
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_8

    .line 1207
    :cond_2c
    aput v3, v8, v1

    .line 1208
    if-eq v1, v3, :cond_a1

    .line 1209
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_flagsBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;

    iget-object v4, v4, Lorg/jbox2d/particle/ParticleSystem$ParticleBufferInt;->data:[I

    aget v4, v4, v1

    aput v4, v0, v3

    .line 1210
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v3

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

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

    .line 1211
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v4, v0, v3

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_velocityBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

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

    .line 1212
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupBuffer:[Lorg/jbox2d/particle/ParticleGroup;

    aget-object v4, v4, v1

    aput-object v4, v0, v3

    .line 1213
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    if-eqz v0, :cond_76

    .line 1214
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_depthBuffer:[F

    aget v4, v4, v1

    aput v4, v0, v3

    .line 1216
    :cond_76
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-eqz v0, :cond_8f

    .line 1217
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    aget-object v4, v0, v3

    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_colorBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/particle/ParticleColor;

    aget-object v0, v0, v1

    invoke-virtual {v4, v0}, Lorg/jbox2d/particle/ParticleColor;->set(Lorg/jbox2d/particle/ParticleColor;)V

    .line 1219
    :cond_8f
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    if-eqz v0, :cond_a1

    .line 1220
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_userDataBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v4, v4, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    aget-object v4, v4, v1

    aput-object v4, v0, v3

    .line 1223
    :cond_a1
    add-int/lit8 v3, v3, 0x1

    goto :goto_28

    :cond_a4
    move v0, v2

    .line 1228
    :goto_a5
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v0, v1, :cond_b6

    .line 1229
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v1, v1, v0

    .line 1230
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

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

    goto :goto_a5

    .line 1237
    :cond_b6
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    move v0, v2

    .line 1238
    :goto_b9
    if-ge v0, v1, :cond_dc

    .line 1239
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v4, v4, v0

    invoke-static {v4}, Lorg/jbox2d/particle/ParticleSystem$Test;->IsProxyInvalid(Lorg/jbox2d/particle/ParticleSystem$Proxy;)Z

    move-result v4

    if-eqz v4, :cond_d9

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

    .line 1241
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v4, v4, v1

    .line 1242
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v7, v7, v0

    aput-object v7, v5, v1

    .line 1243
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aput-object v4, v5, v0

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

    .line 1238
    :cond_d9
    add-int/lit8 v0, v0, 0x1

    goto :goto_b9

    .line 1247
    :cond_dc
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    move v0, v2

    .line 1250
    :goto_df
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    if-ge v0, v1, :cond_f6

    .line 1251
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v1, v1, v0

    .line 1252
    iget v4, v1, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleContact;->indexA:I

    .line 1253
    iget v4, v1, Lorg/jbox2d/particle/ParticleContact;->indexB:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleContact;->indexB:I

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

    goto :goto_df

    .line 1259
    :cond_f6
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    move v0, v2

    .line 1260
    :goto_f9
    if-ge v0, v1, :cond_11c

    .line 1261
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v4, v4, v0

    invoke-static {v4}, Lorg/jbox2d/particle/ParticleSystem$Test;->IsContactInvalid(Lorg/jbox2d/particle/ParticleContact;)Z

    move-result v4

    if-eqz v4, :cond_119

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

    .line 1263
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v4, v4, v1

    .line 1264
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v7, v7, v0

    aput-object v7, v5, v1

    .line 1265
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aput-object v4, v5, v0

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

    .line 1260
    :cond_119
    add-int/lit8 v0, v0, 0x1

    goto :goto_f9

    .line 1269
    :cond_11c
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    move v0, v2

    .line 1272
    :goto_11f
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    if-ge v0, v1, :cond_130

    .line 1273
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v1, v1, v0

    .line 1274
    iget v4, v1, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleBodyContact;->index:I

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

    goto :goto_11f

    .line 1280
    :cond_130
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    move v0, v2

    .line 1281
    :goto_133
    if-ge v0, v1, :cond_156

    .line 1282
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v4, v4, v0

    invoke-static {v4}, Lorg/jbox2d/particle/ParticleSystem$Test;->IsBodyContactInvalid(Lorg/jbox2d/particle/ParticleBodyContact;)Z

    move-result v4

    if-eqz v4, :cond_153

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

    .line 1284
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v4, v4, v1

    .line 1285
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aget-object v7, v7, v0

    aput-object v7, v5, v1

    .line 1286
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactBuffer:[Lorg/jbox2d/particle/ParticleBodyContact;

    aput-object v4, v5, v0

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

    .line 1281
    :cond_153
    add-int/lit8 v0, v0, 0x1

    goto :goto_133

    .line 1290
    :cond_156
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    move v0, v2

    .line 1293
    :goto_159
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    if-ge v0, v1, :cond_170

    .line 1294
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v1, v1, v0

    .line 1295
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexA:I

    .line 1296
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Pair;->indexB:I

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

    goto :goto_159

    .line 1300
    :cond_170
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    move v0, v2

    .line 1301
    :goto_173
    if-ge v0, v1, :cond_196

    .line 1302
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v4, v4, v0

    invoke-static {v4}, Lorg/jbox2d/particle/ParticleSystem$Test;->IsPairInvalid(Lorg/jbox2d/particle/ParticleSystem$Pair;)Z

    move-result v4

    if-eqz v4, :cond_193

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

    .line 1304
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v4, v4, v1

    .line 1305
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aget-object v7, v7, v0

    aput-object v7, v5, v1

    .line 1306
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairBuffer:[Lorg/jbox2d/particle/ParticleSystem$Pair;

    aput-object v4, v5, v0

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

    .line 1301
    :cond_193
    add-int/lit8 v0, v0, 0x1

    goto :goto_173

    .line 1310
    :cond_196
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_pairCount:I

    move v0, v2

    .line 1313
    :goto_199
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    if-ge v0, v1, :cond_1b6

    .line 1314
    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v1, v1, v0

    .line 1315
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexA:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexA:I

    .line 1316
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexB:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexB:I

    .line 1317
    iget v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexC:I

    aget v4, v8, v4

    iput v4, v1, Lorg/jbox2d/particle/ParticleSystem$Triad;->indexC:I

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

    goto :goto_199

    .line 1322
    :cond_1b6
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    move v0, v2

    .line 1323
    :goto_1b9
    if-ge v0, v1, :cond_1dc

    .line 1324
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v4, v4, v0

    invoke-static {v4}, Lorg/jbox2d/particle/ParticleSystem$Test;->IsTriadInvalid(Lorg/jbox2d/particle/ParticleSystem$Triad;)Z

    move-result v4

    if-eqz v4, :cond_1d9

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

    .line 1326
    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v4, v4, v1

    .line 1327
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    iget-object v7, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aget-object v7, v7, v0

    aput-object v7, v5, v1

    .line 1328
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadBuffer:[Lorg/jbox2d/particle/ParticleSystem$Triad;

    aput-object v4, v5, v0

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

    .line 1323
    :cond_1d9
    add-int/lit8 v0, v0, 0x1

    goto :goto_1b9

    .line 1332
    :cond_1dc
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_triadCount:I

    .line 1335
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    move-object v7, v0

    :goto_1e1
    if-eqz v7, :cond_220

    .line 1339
    iget v0, v7, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    move v1, v2

    move v4, v2

    move v5, v3

    :goto_1e8
    iget v9, v7, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    if-ge v0, v9, :cond_1ff

    .line 1340
    aget v9, v8, v0

    .line 1341
    if-ltz v9, :cond_1fd

    .line 1342
    invoke-static {v5, v9}, Lorg/jbox2d/common/MathUtils;->min(II)I

    move-result v5

    .line 1343
    add-int/lit8 v9, v9, 0x1

    invoke-static {v4, v9}, Lorg/jbox2d/common/MathUtils;->max(II)I

    move-result v4

    .line 1339
    :goto_1fa
    add-int/lit8 v0, v0, 0x1

    goto :goto_1e8

    :cond_1fd
    move v1, v6

    .line 1345
    goto :goto_1fa

    .line 1348
    :cond_1ff
    if-ge v5, v4, :cond_215

    .line 1349
    iput v5, v7, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    .line 1350
    iput v4, v7, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    .line 1351
    if-eqz v1, :cond_20f

    .line 1352
    iget v0, v7, Lorg/jbox2d/particle/ParticleGroup;->m_groupFlags:I

    and-int/lit8 v0, v0, 0x2

    if-eqz v0, :cond_20f

    .line 1353
    iput-boolean v6, v7, Lorg/jbox2d/particle/ParticleGroup;->m_toBeSplit:Z

    .line 1335
    :cond_20f
    :goto_20f
    invoke-virtual {v7}, Lorg/jbox2d/particle/ParticleGroup;->getNext()Lorg/jbox2d/particle/ParticleGroup;

    move-result-object v0

    move-object v7, v0

    goto :goto_1e1

    .line 1357
    :cond_215
    iput v2, v7, Lorg/jbox2d/particle/ParticleGroup;->m_firstIndex:I

    .line 1358
    iput v2, v7, Lorg/jbox2d/particle/ParticleGroup;->m_lastIndex:I

    .line 1359
    iget-boolean v0, v7, Lorg/jbox2d/particle/ParticleGroup;->m_destroyAutomatically:Z

    if-eqz v0, :cond_20f

    .line 1360
    iput-boolean v6, v7, Lorg/jbox2d/particle/ParticleGroup;->m_toBeDestroyed:Z

    goto :goto_20f

    .line 1366
    :cond_220
    iput v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    .line 1370
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_groupList:Lorg/jbox2d/particle/ParticleGroup;

    :goto_224
    if-eqz v0, :cond_238

    .line 1371
    invoke-virtual {v0}, Lorg/jbox2d/particle/ParticleGroup;->getNext()Lorg/jbox2d/particle/ParticleGroup;

    move-result-object v1

    .line 1372
    iget-boolean v2, v0, Lorg/jbox2d/particle/ParticleGroup;->m_toBeDestroyed:Z

    if-eqz v2, :cond_233

    .line 1373
    invoke-virtual {p0, v0}, Lorg/jbox2d/particle/ParticleSystem;->destroyParticleGroup(Lorg/jbox2d/particle/ParticleGroup;)V

    :cond_231
    :goto_231
    move-object v0, v1

    .line 1378
    goto :goto_224

    .line 1374
    :cond_233
    iget-boolean v0, v0, Lorg/jbox2d/particle/ParticleGroup;->m_toBeSplit:Z

    if-eqz v0, :cond_231

    goto :goto_231

    .line 1379
    :cond_238
    return-void
.end method

.method public updateBodyContacts()V
    .registers 7

    .prologue
    const/4 v2, 0x0

    const v4, 0x7f7fffff    # Float.MAX_VALUE

    const v1, -0x800001

    .line 634
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->temp:Lorg/jbox2d/collision/AABB;

    .line 635
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    .line 636
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    .line 637
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    .line 638
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    move v1, v2

    .line 639
    :goto_1a
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_count:I

    if-ge v1, v0, :cond_38

    .line 640
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v1

    .line 641
    iget-object v4, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

    iget-object v5, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

    invoke-static {v4, v0, v5}, Lorg/jbox2d/common/Vec2;->minToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 642
    iget-object v4, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

    iget-object v5, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

    invoke-static {v4, v0, v5}, Lorg/jbox2d/common/Vec2;->maxToOut(Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;Lorg/jbox2d/common/Vec2;)V

    .line 639
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_1a

    .line 644
    :cond_38
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    sub-float/2addr v1, v4

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

    .line 645
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->lowerBound:Lorg/jbox2d/common/Vec2;

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

    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    sub-float/2addr v1, v4

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

    .line 646
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    add-float/2addr v1, v4

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

    .line 647
    iget-object v0, v3, Lorg/jbox2d/collision/AABB;->upperBound:Lorg/jbox2d/common/Vec2;

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

    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_particleDiameter:F

    add-float/2addr v1, v4

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

    .line 648
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_bodyContactCount:I

    .line 650
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->ubccallback:Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;

    iput-object p0, v0, Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;->system:Lorg/jbox2d/particle/ParticleSystem;

    .line 651
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_world:Lorg/jbox2d/dynamics/World;

    iget-object v1, p0, Lorg/jbox2d/particle/ParticleSystem;->ubccallback:Lorg/jbox2d/particle/ParticleSystem$UpdateBodyContactsCallback;

    invoke-virtual {v0, v1, v3}, Lorg/jbox2d/dynamics/World;->queryAABB(Lorg/jbox2d/callbacks/QueryCallback;Lorg/jbox2d/collision/AABB;)V

    .line 652
    return-void
.end method

.method public updateContacts(Z)V
    .registers 13

    .prologue
    const/4 v10, 0x1

    const/4 v2, 0x0

    .line 580
    move v1, v2

    :goto_3
    iget v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v1, v0, :cond_29

    .line 581
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v3, v0, v1

    .line 582
    iget v4, v3, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    .line 583
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_positionBuffer:Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;

    iget-object v0, v0, Lorg/jbox2d/particle/ParticleSystem$ParticleBuffer;->data:[Ljava/lang/Object;

    check-cast v0, [Lorg/jbox2d/common/Vec2;

    aget-object v0, v0, v4

    .line 584
    iget v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

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

    mul-float/2addr v4, v5

    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_inverseDiameter:F

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

    mul-float/2addr v0, v5

    invoke-static {v4, v0}, Lorg/jbox2d/particle/ParticleSystem;->computeTag(FF)J

    move-result-wide v4

    iput-wide v4, v3, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    .line 580
    add-int/lit8 v0, v1, 0x1

    move v1, v0

    goto :goto_3

    .line 586
    :cond_29
    iget-object v0, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    invoke-static {v0, v2, v1}, Ljava/util/Arrays;->sort([Ljava/lang/Object;II)V

    .line 587
    iput v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    move v0, v2

    move v1, v2

    .line 589
    :goto_34
    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v0, v3, :cond_96

    .line 590
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v4, v3, v0

    .line 591
    iget-wide v6, v4, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    invoke-static {v6, v7, v10, v2}, Lorg/jbox2d/particle/ParticleSystem;->computeRelativeTag(JII)J

    move-result-wide v6

    .line 592
    add-int/lit8 v3, v0, 0x1

    :goto_44
    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v3, v5, :cond_52

    .line 593
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v5, v5, v3

    .line 594
    iget-wide v8, v5, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    cmp-long v8, v6, v8

    if-gez v8, :cond_7f

    .line 599
    :cond_52
    iget-wide v6, v4, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    const/4 v3, -0x1

    invoke-static {v6, v7, v3, v10}, Lorg/jbox2d/particle/ParticleSystem;->computeRelativeTag(JII)J

    move-result-wide v6

    .line 600
    :goto_59
    iget v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v1, v3, :cond_67

    .line 601
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v3, v3, v1

    .line 602
    iget-wide v8, v3, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    cmp-long v3, v6, v8

    if-gtz v3, :cond_89

    .line 606
    :cond_67
    iget-wide v6, v4, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    invoke-static {v6, v7, v10, v10}, Lorg/jbox2d/particle/ParticleSystem;->computeRelativeTag(JII)J

    move-result-wide v6

    move v3, v1

    .line 608
    :goto_6e
    iget v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyCount:I

    if-ge v3, v5, :cond_7c

    .line 609
    iget-object v5, p0, Lorg/jbox2d/particle/ParticleSystem;->m_proxyBuffer:[Lorg/jbox2d/particle/ParticleSystem$Proxy;

    aget-object v5, v5, v3

    .line 610
    iget-wide v8, v5, Lorg/jbox2d/particle/ParticleSystem$Proxy;->tag:J

    cmp-long v8, v6, v8

    if-gez v8, :cond_8c

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

    goto :goto_34

    .line 597
    :cond_7f
    iget v8, v4, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    iget v5, v5, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    invoke-virtual {p0, v8, v5}, Lorg/jbox2d/particle/ParticleSystem;->addContact(II)V

    .line 592
    add-int/lit8 v3, v3, 0x1

    goto :goto_44

    .line 600
    :cond_89
    add-int/lit8 v1, v1, 0x1

    goto :goto_59

    .line 613
    :cond_8c
    iget v8, v4, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    iget v5, v5, Lorg/jbox2d/particle/ParticleSystem$Proxy;->index:I

    invoke-virtual {p0, v8, v5}, Lorg/jbox2d/particle/ParticleSystem;->addContact(II)V

    .line 608
    add-int/lit8 v3, v3, 0x1

    goto :goto_6e

    .line 616
    :cond_96
    if-eqz p1, :cond_c0

    .line 617
    iget v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    move v0, v2

    .line 618
    :goto_9b
    if-ge v0, v1, :cond_be

    .line 619
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v0

    iget v2, v2, Lorg/jbox2d/particle/ParticleContact;->flags:I

    and-int/lit8 v2, v2, 0x2

    if-eqz v2, :cond_bb

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

    .line 621
    iget-object v2, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v2, v2, v1

    .line 622
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    iget-object v4, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aget-object v4, v4, v0

    aput-object v4, v3, v1

    .line 623
    iget-object v3, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactBuffer:[Lorg/jbox2d/particle/ParticleContact;

    aput-object v2, v3, v0

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

    .line 618
    :cond_bb
    add-int/lit8 v0, v0, 0x1

    goto :goto_9b

    .line 627
    :cond_be
    iput v1, p0, Lorg/jbox2d/particle/ParticleSystem;->m_contactCount:I

    .line 629
    :cond_c0
    return-void
.end method