Hack$HackedMethod.smali

.class public Lorg/acdd/hack/Hack$HackedMethod;
.super Ljava/lang/Object;
.source "Hack.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lorg/acdd/hack/Hack;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x9
    name = "HackedMethod"
.end annotation


# instance fields
.field protected final mMethod:Ljava/lang/reflect/Method;


# direct methods
.method constructor <init>(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;I)V
    .registers 9
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Ljava/lang/Class",
            "<*>;",
            "Ljava/lang/String;",
            "[",
            "Ljava/lang/Class",
            "<*>;I)V"
        }
    .end annotation

    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;
        }
    .end annotation

    .prologue
    const/4 v1, 0x0

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

    .line 278
    if-nez p1, :cond_9

    .line 279
    iput-object v1, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    .line 297
    :goto_8
    return-void

    .line 283
    :cond_9
    :try_start_9
    invoke-virtual {p1, p2, p3}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v1

    .line 284
    if-lez p4, :cond_35

    invoke-virtual {v1}, Ljava/lang/reflect/Method;->getModifiers()I

    move-result v0

    and-int/2addr v0, p4

    if-eq v0, p4, :cond_35

    .line 285
    new-instance v0, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;

    new-instance v2, Ljava/lang/StringBuilder;

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

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

    move-result-object v2

    const-string v3, " does not match modifiers: "

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

    move-result-object v2

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

    move-result-object v2

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

    move-result-object v2

    invoke-direct {v0, v2}, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;-><init>(Ljava/lang/String;)V

    # invokes: Lorg/acdd/hack/Hack;->fail(Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;)V
    invoke-static {v0}, Lorg/acdd/hack/Hack;->access$000(Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;)V

    .line 288
    :cond_35
    const/4 v0, 0x1

    invoke-virtual {v1, v0}, Ljava/lang/reflect/Method;->setAccessible(Z)V
    :try_end_39
    .catch Ljava/lang/Exception; {:try_start_9 .. :try_end_39} :catch_3c
    .catchall {:try_start_9 .. :try_end_39} :catchall_4e

    .line 295
    iput-object v1, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    goto :goto_8

    .line 289
    :catch_3c
    move-exception v0

    .line 290
    :try_start_3d
    new-instance v2, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;

    invoke-direct {v2, v0}, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;-><init>(Ljava/lang/Exception;)V

    .line 291
    invoke-virtual {v2, p1}, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;->setHackedClass(Ljava/lang/Class;)V

    .line 292
    invoke-virtual {v2, p2}, Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;->setHackedMethodName(Ljava/lang/String;)V

    .line 293
    # invokes: Lorg/acdd/hack/Hack;->fail(Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;)V
    invoke-static {v2}, Lorg/acdd/hack/Hack;->access$000(Lorg/acdd/hack/Hack$HackDeclaration$HackAssertionException;)V
    :try_end_4b
    .catchall {:try_start_3d .. :try_end_4b} :catchall_4e

    .line 295
    iput-object v1, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    goto :goto_8

    :catchall_4e
    move-exception v0

    iput-object v1, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    throw v0
.end method


# virtual methods
.method public getMethod()Ljava/lang/reflect/Method;
    .registers 2

    .prologue
    .line 300
    iget-object v0, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    return-object v0
.end method

.method public varargs invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/IllegalArgumentException;,
            Ljava/lang/reflect/InvocationTargetException;
        }
    .end annotation

    .prologue
    .line 265
    :try_start_0
    iget-object v0, p0, Lorg/acdd/hack/Hack$HackedMethod;->mMethod:Ljava/lang/reflect/Method;

    invoke-virtual {v0, p1, p2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
    :try_end_5
    .catch Ljava/lang/IllegalAccessException; {:try_start_0 .. :try_end_5} :catch_7

    move-result-object v0

    .line 269
    :goto_6
    return-object v0

    .line 266
    :catch_7
    move-exception v0

    .line 267
    invoke-virtual {v0}, Ljava/lang/IllegalAccessException;->printStackTrace()V

    .line 269
    const/4 v0, 0x0

    goto :goto_6
.end method