Subroutine.smali

.class Lorg/objectweb/asm/tree/analysis/Subroutine;
.super Ljava/lang/Object;


# instance fields
.field access:[Z

.field callers:Ljava/util/List;

.field start:Lorg/objectweb/asm/tree/LabelNode;


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

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

    return-void
.end method

.method constructor <init>(Lorg/objectweb/asm/tree/LabelNode;ILorg/objectweb/asm/tree/JumpInsnNode;)V
    .registers 5

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

    iput-object p1, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->start:Lorg/objectweb/asm/tree/LabelNode;

    new-array v0, p2, [Z

    iput-object v0, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    new-instance v0, Ljava/util/ArrayList;

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

    iput-object v0, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    iget-object v0, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-interface {v0, p3}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    return-void
.end method


# virtual methods
.method public copy()Lorg/objectweb/asm/tree/analysis/Subroutine;
    .registers 6

    const/4 v4, 0x0

    new-instance v0, Lorg/objectweb/asm/tree/analysis/Subroutine;

    invoke-direct {v0}, Lorg/objectweb/asm/tree/analysis/Subroutine;-><init>()V

    iget-object v1, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->start:Lorg/objectweb/asm/tree/LabelNode;

    iput-object v1, v0, Lorg/objectweb/asm/tree/analysis/Subroutine;->start:Lorg/objectweb/asm/tree/LabelNode;

    iget-object v1, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    array-length v1, v1

    new-array v1, v1, [Z

    iput-object v1, v0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    iget-object v1, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    iget-object v2, v0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    iget-object v3, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    array-length v3, v3

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

    new-instance v1, Ljava/util/ArrayList;

    iget-object v2, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-direct {v1, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V

    iput-object v1, v0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    return-object v0
.end method

.method public merge(Lorg/objectweb/asm/tree/analysis/Subroutine;)Z
    .registers 7

    const/4 v3, 0x1

    const/4 v1, 0x0

    move v0, v1

    move v2, v1

    :goto_4
    iget-object v4, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    array-length v4, v4

    if-ge v0, v4, :cond_1d

    iget-object v4, p1, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    aget-boolean v4, v4, v0

    if-eqz v4, :cond_1a

    iget-object v4, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    aget-boolean v4, v4, v0

    if-nez v4, :cond_1a

    iget-object v2, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->access:[Z

    aput-boolean v3, v2, v0

    move v2, v3

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

    goto :goto_4

    :cond_1d
    iget-object v0, p1, Lorg/objectweb/asm/tree/analysis/Subroutine;->start:Lorg/objectweb/asm/tree/LabelNode;

    iget-object v4, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->start:Lorg/objectweb/asm/tree/LabelNode;

    if-ne v0, v4, :cond_44

    :goto_23
    iget-object v0, p1, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-interface {v0}, Ljava/util/List;->size()I

    move-result v0

    if-ge v1, v0, :cond_44

    iget-object v0, p1, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lorg/objectweb/asm/tree/JumpInsnNode;

    iget-object v4, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-interface {v4, v0}, Ljava/util/List;->contains(Ljava/lang/Object;)Z

    move-result v4

    if-nez v4, :cond_41

    iget-object v2, p0, Lorg/objectweb/asm/tree/analysis/Subroutine;->callers:Ljava/util/List;

    invoke-interface {v2, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z

    move v2, v3

    :cond_41
    add-int/lit8 v1, v1, 0x1

    goto :goto_23

    :cond_44
    return v2
.end method