BSHAssignment.smali

.class Lbsh/BSHAssignment;
.super Lbsh/SimpleNode;

# interfaces
.implements Lbsh/k;


# instance fields
.field public a:I


# direct methods
.method constructor <init>(I)V
    .registers 2

    invoke-direct {p0, p1}, Lbsh/SimpleNode;-><init>(I)V

    return-void
.end method

.method private a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;
    .registers 7

    instance-of v0, p1, Ljava/lang/String;

    if-eqz v0, :cond_29

    sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;

    if-eq p2, v0, :cond_29

    const/16 v0, 0x66

    if-eq p3, v0, :cond_15

    new-instance v0, Lbsh/UtilEvalError;

    const-string/jumbo v1, "Use of non + operator with String LHS"

    invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_15
    new-instance v0, Ljava/lang/StringBuffer;

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

    check-cast p1, Ljava/lang/String;

    invoke-virtual {v0, p1}, Ljava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;

    move-result-object v0

    invoke-virtual {v0, p2}, Ljava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v0

    :goto_28
    return-object v0

    :cond_29
    instance-of v0, p1, Lbsh/Primitive;

    if-nez v0, :cond_31

    instance-of v0, p2, Lbsh/Primitive;

    if-eqz v0, :cond_53

    :cond_31
    sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;

    if-eq p1, v0, :cond_39

    sget-object v0, Lbsh/Primitive;->c:Lbsh/Primitive;

    if-ne p2, v0, :cond_42

    :cond_39
    new-instance v0, Lbsh/UtilEvalError;

    const-string/jumbo v1, "Illegal use of undefined object or \'void\' literal"

    invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_42
    sget-object v0, Lbsh/Primitive;->b:Lbsh/Primitive;

    if-eq p1, v0, :cond_4a

    sget-object v0, Lbsh/Primitive;->b:Lbsh/Primitive;

    if-ne p2, v0, :cond_53

    :cond_4a
    new-instance v0, Lbsh/UtilEvalError;

    const-string/jumbo v1, "Illegal use of null object or \'null\' literal"

    invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_53
    instance-of v0, p1, Ljava/lang/Boolean;

    if-nez v0, :cond_63

    instance-of v0, p1, Ljava/lang/Character;

    if-nez v0, :cond_63

    instance-of v0, p1, Ljava/lang/Number;

    if-nez v0, :cond_63

    instance-of v0, p1, Lbsh/Primitive;

    if-eqz v0, :cond_78

    :cond_63
    instance-of v0, p2, Ljava/lang/Boolean;

    if-nez v0, :cond_73

    instance-of v0, p2, Ljava/lang/Character;

    if-nez v0, :cond_73

    instance-of v0, p2, Ljava/lang/Number;

    if-nez v0, :cond_73

    instance-of v0, p2, Lbsh/Primitive;

    if-eqz v0, :cond_78

    :cond_73
    invoke-static {p1, p2, p3}, Lbsh/Primitive;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    goto :goto_28

    :cond_78
    new-instance v0, Lbsh/UtilEvalError;

    new-instance v1, Ljava/lang/StringBuffer;

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

    const-string/jumbo v2, "Non primitive value in operator: "

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

    move-result-object v1

    invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v2

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

    move-result-object v1

    const-string/jumbo v2, " "

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

    move-result-object v1

    sget-object v2, Lbsh/k;->a_:[Ljava/lang/String;

    aget-object v2, v2, p3

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

    move-result-object v1

    const-string/jumbo v2, " "

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

    move-result-object v1

    invoke-virtual {p2}, Ljava/lang/Object;->getClass()Ljava/lang/Class;

    move-result-object v2

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

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/StringBuffer;->toString()Ljava/lang/String;

    move-result-object v1

    invoke-direct {v0, v1}, Lbsh/UtilEvalError;-><init>(Ljava/lang/String;)V

    throw v0
.end method


# virtual methods
.method public a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;
    .registers 8

    const/4 v0, 0x0

    invoke-virtual {p0, v0}, Lbsh/BSHAssignment;->a(I)Lbsh/Node;

    move-result-object v0

    check-cast v0, Lbsh/BSHPrimaryExpression;

    if-nez v0, :cond_12

    new-instance v0, Lbsh/InterpreterError;

    const-string/jumbo v1, "Error, null LHSnode"

    invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_12
    invoke-virtual {p2}, Lbsh/Interpreter;->f()Z

    move-result v2

    invoke-virtual {v0, p1, p2}, Lbsh/BSHPrimaryExpression;->b(Lbsh/c;Lbsh/Interpreter;)Lbsh/LHS;

    move-result-object v3

    if-nez v3, :cond_25

    new-instance v0, Lbsh/InterpreterError;

    const-string/jumbo v1, "Error, null LHS"

    invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V

    throw v0

    :cond_25
    const/4 v0, 0x0

    iget v1, p0, Lbsh/BSHAssignment;->a:I

    const/16 v4, 0x51

    if-eq v1, v4, :cond_e1

    :try_start_2c
    invoke-virtual {v3}, Lbsh/LHS;->a()Ljava/lang/Object;
    :try_end_2f
    .catch Lbsh/UtilEvalError; {:try_start_2c .. :try_end_2f} :catch_49

    move-result-object v0

    move-object v1, v0

    :goto_31
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lbsh/BSHAssignment;->a(I)Lbsh/Node;

    move-result-object v0

    check-cast v0, Lbsh/SimpleNode;

    invoke-virtual {v0, p1, p2}, Lbsh/SimpleNode;->a(Lbsh/c;Lbsh/Interpreter;)Ljava/lang/Object;

    move-result-object v0

    sget-object v4, Lbsh/Primitive;->c:Lbsh/Primitive;

    if-ne v0, v4, :cond_4f

    new-instance v0, Lbsh/EvalError;

    const-string/jumbo v1, "Void assignment."

    invoke-direct {v0, v1, p0, p1}, Lbsh/EvalError;-><init>(Ljava/lang/String;Lbsh/SimpleNode;Lbsh/c;)V

    throw v0

    :catch_49
    move-exception v0

    invoke-virtual {v0, p0, p1}, Lbsh/UtilEvalError;->a(Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;

    move-result-object v0

    throw v0

    :cond_4f
    :try_start_4f
    iget v4, p0, Lbsh/BSHAssignment;->a:I

    sparse-switch v4, :sswitch_data_e4

    new-instance v0, Lbsh/InterpreterError;

    const-string/jumbo v1, "unimplemented operator in assignment BSH"

    invoke-direct {v0, v1}, Lbsh/InterpreterError;-><init>(Ljava/lang/String;)V

    throw v0
    :try_end_5d
    .catch Lbsh/UtilEvalError; {:try_start_4f .. :try_end_5d} :catch_5d

    :catch_5d
    move-exception v0

    invoke-virtual {v0, p0, p1}, Lbsh/UtilEvalError;->a(Lbsh/SimpleNode;Lbsh/c;)Lbsh/EvalError;

    move-result-object v0

    throw v0

    :sswitch_63
    :try_start_63
    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    :goto_67
    return-object v0

    :sswitch_68
    const/16 v4, 0x66

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_73
    const/16 v4, 0x67

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_7e
    const/16 v4, 0x68

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_89
    const/16 v4, 0x69

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_94
    const/16 v4, 0x6a

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_9f
    const/16 v4, 0x6c

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_aa
    const/16 v4, 0x6e

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_b5
    const/16 v4, 0x6f

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_c0
    const/16 v4, 0x70

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_cb
    const/16 v4, 0x72

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;

    move-result-object v0

    goto :goto_67

    :sswitch_d6
    const/16 v4, 0x74

    invoke-direct {p0, v1, v0, v4}, Lbsh/BSHAssignment;->a(Ljava/lang/Object;Ljava/lang/Object;I)Ljava/lang/Object;

    move-result-object v0

    invoke-virtual {v3, v0, v2}, Lbsh/LHS;->a(Ljava/lang/Object;Z)Ljava/lang/Object;
    :try_end_df
    .catch Lbsh/UtilEvalError; {:try_start_63 .. :try_end_df} :catch_5d

    move-result-object v0

    goto :goto_67

    :cond_e1
    move-object v1, v0

    goto/16 :goto_31

    :sswitch_data_e4
    .sparse-switch
        0x51 -> :sswitch_63
        0x76 -> :sswitch_68
        0x77 -> :sswitch_73
        0x78 -> :sswitch_7e
        0x79 -> :sswitch_89
        0x7a -> :sswitch_94
        0x7b -> :sswitch_94
        0x7c -> :sswitch_9f
        0x7d -> :sswitch_9f
        0x7e -> :sswitch_aa
        0x7f -> :sswitch_b5
        0x80 -> :sswitch_c0
        0x81 -> :sswitch_c0
        0x82 -> :sswitch_cb
        0x83 -> :sswitch_cb
        0x84 -> :sswitch_d6
        0x85 -> :sswitch_d6
    .end sparse-switch
.end method