summaryrefslogtreecommitdiff
path: root/valid
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2025-08-04 19:53:58 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2025-08-04 19:53:58 (GMT)
commit1c7c6cdeae20e824ad8447daec4dc12b3b286def (patch)
tree41e2a3e9e4fa5b10306bae6d565f0f2db5980982 /valid
Initial version.
Diffstat (limited to 'valid')
-rw-r--r--valid/code-0000.smali58
-rw-r--r--valid/code-0001.smali74
-rw-r--r--valid/code-0002.smali107
-rw-r--r--valid/code-0003.smali60
-rw-r--r--valid/code-0004.smali38
-rw-r--r--valid/code-0005.smali52
-rw-r--r--valid/code-0006.smali60
-rw-r--r--valid/code-0007.smali80
-rw-r--r--valid/code-0008.smali58
-rw-r--r--valid/code-0009.smali73
-rw-r--r--valid/code-0010.smali35
-rw-r--r--valid/code-0011.smali82
-rw-r--r--valid/code-0012.smali105
-rw-r--r--valid/code-0013.smali98
-rw-r--r--valid/code-0014.smali82
-rw-r--r--valid/code-0015.smali70
-rw-r--r--valid/code-0016.smali83
-rw-r--r--valid/code-0017.smali63
-rw-r--r--valid/code-0018.smali140
-rw-r--r--valid/code-0019.smali65
-rw-r--r--valid/code-0020.smali108
21 files changed, 1591 insertions, 0 deletions
diff --git a/valid/code-0000.smali b/valid/code-0000.smali
new file mode 100644
index 0000000..6601296
--- /dev/null
+++ b/valid/code-0000.smali
@@ -0,0 +1,58 @@
+
+.class public LBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public static dataHandling()V
+ .locals 4
+ const/16 v0, 0x1234
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ new-instance v2, Ljava/lang/StringBuilder;
+ invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
+ const-string v3, "Data handling: "
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+ invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public static arithmeticOperations()V
+ .locals 3
+ const/4 v0, 0x7
+ const/16 v1, 0xA
+ add-int/lit8 v2, v0, 0x3
+ sub-int v3, v1, v2
+ mul-int/lit8 v0, v2, 0x2
+ div-int v1, v3, v0
+ rem-int v2, v1, v0
+ const/16 v0, 0x15
+ and-int v1, v2, v0
+ or-int v2, v1, v0
+ xor-int v1, v2, v0
+ shl-int v2, v1, v0
+ shr-int v1, v2, v0
+ neg-int v2, v1
+ return-void
+.end method
+
+.method public static controlFlowOperations()V
+ .locals 3
+ const/4 v0, 0x5
+ if-eqz v0, :cond_true
+ goto :cond_false
+:cond_true
+ const-string v1, "Condition is true"
+ goto :end_if
+:cond_false
+ const-string v1, "Condition is false"
+:end_if
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
diff --git a/valid/code-0001.smali b/valid/code-0001.smali
new file mode 100644
index 0000000..3c2a375
--- /dev/null
+++ b/valid/code-0001.smali
@@ -0,0 +1,74 @@
+
+.class public LBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public static dataHandling()V
+ .locals 3
+
+ const/4 v0, 0x1
+ const/4 v1, 0x2
+
+ add-int/lit8 v2, v0, 0x3
+ sub-int v2, v2, v1
+ mul-int/lit8 v2, v2, 0x2
+ div-int v2, v2, v0
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Data Handling: "
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+ iput v2, p0, LBytecodeDemo;->result:I
+ return-void
+.end method
+
+.method public static arithmeticLogic()V
+ .locals 3
+
+ const/4 v0, 0x5
+ const/4 v1, 0x3
+
+ add-int v2, v0, v1
+ sub-int v2, v2, v1
+ mul-int/lit8 v2, v2, 0x2
+ div-int v2, v2, v0
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Arithmetic and Logic Operations: "
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+ iput v2, p0, LBytecodeDemo;->result:I
+ return-void
+.end method
+
+.method public static controlFlow()V
+ .locals 3
+
+ const/4 v0, 0x1
+ const/4 v1, 0x5
+
+ if-eq v0, v1, :cond_true
+ goto :cond_false
+
+:cond_true
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Control Flow True"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+
+:cond_false
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Control Flow False"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
diff --git a/valid/code-0002.smali b/valid/code-0002.smali
new file mode 100644
index 0000000..592c3ce
--- /dev/null
+++ b/valid/code-0002.smali
@@ -0,0 +1,107 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method static public main([Ljava/lang/String;)V
+ .locals 4
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Hello, Dalvik!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ new-instance v2, Ljava/util/ArrayList;
+ invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
+ sput-object v2, LSmaliDemo;->list:Ljava/util/ArrayList;
+
+ const/4 v3, 0x1
+ invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(I)V
+
+ return-void
+.end method
+
+.method public test_data_handling()V
+ .locals 5
+
+ new-instance v0, LSmaliDemo;
+ invoke-direct {v0}, LSmaliDemo;-><init>()V
+
+ const/16 v1, 0x10
+ iput v1, v0, LSmaliDemo;->dataField:I
+
+ iget v2, v0, LSmaliDemo;->dataField:I
+ add-int/lit8 v3, v2, 0x2
+ iput v3, v0, LSmaliDemo;->dataField:I
+
+ return-void
+.end method
+
+.method public test_arithmetic_logic_operations()V
+ .locals 4
+
+ new-instance v0, LSmaliDemo;
+ invoke-direct {v0}, LSmaliDemo;-><init>()V
+
+ const/4 v1, 0x5
+ const/4 v2, 0x3
+ invoke-static {v1, v2}, Ljava/lang/Math;->max(II)I
+ move-result v3
+ iput v3, v0, LSmaliDemo;->resultField:I
+
+ return-void
+.end method
+
+.method public test_control_flow_operations()V
+ .locals 3
+
+ new-instance v0, LSmaliDemo;
+ invoke-direct {v0}, LSmaliDemo;-><init>()V
+
+ const/4 v1, 0x1
+ if-eqz v1, :cond_true
+ goto :cond_false
+
+ :cond_true
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v3, "Condition is true"
+ invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ goto :end_if
+
+ :cond_false
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v3, "Condition is false"
+ invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :end_if
+ return-void
+.end method
+
+.method public test_high_dex_instructions()V
+ .locals 4
+
+ new-instance v0, LSmaliDemo;
+ invoke-direct {v0}, LSmaliDemo;-><init>()V
+
+ const-string v1, "Hello"
+ invoke-static {v1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
+ move-result-object v2
+ iput-object v2, v0, LSmaliDemo;->stringField:Ljava/lang/String;
+
+ const/4 v3, 0x3
+ if-eqz v3, :cond_true_2
+ goto :cond_false_2
+
+ :cond_true_2
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v2, "True branch"
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ goto :end_if_2
+
+ :cond_false_2
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v2, "False branch"
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :end_if_2
+ return-void
+.end method
diff --git a/valid/code-0003.smali b/valid/code-0003.smali
new file mode 100644
index 0000000..19b8c43
--- /dev/null
+++ b/valid/code-0003.smali
@@ -0,0 +1,60 @@
+
+.class public LBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ # Constructor
+ return-void
+.end method
+
+# Data handling
+.method public static handleData(I[I)I
+ .locals 4
+
+ iget-object v0, p0, LBytecodeDemo;->data:I
+ iput-object v1, p0, LBytecodeDemo;->data:I
+
+ return-void
+.end method
+
+# Arithmetic and logic operations
+.method public static arithLogic(I)V
+ .locals 4
+
+ const/4 v0, 0x5
+ add-int/lit8 v1, v0, 0x3
+ sub-int v2, v1, p1
+ mul-int v3, v2, p1
+ div-int v0, v3, p1
+
+ return-void
+.end method
+
+# Control flow operations
+.method public static controlFlow(I)V
+ .locals 3
+
+ if-eqz p1, :cond_true
+
+ const/4 v0, 0x1
+ goto :end_if
+
+:cond_true
+ const/4 v0, 0x0
+
+:end_if
+ return-void
+.end method
+
+# Specific instructions for highest Dex files versions (038 or 039)
+.method public static specificInstructions(I)V
+ .locals 5
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello, World!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
diff --git a/valid/code-0004.smali b/valid/code-0004.smali
new file mode 100644
index 0000000..5cad6c6
--- /dev/null
+++ b/valid/code-0004.smali
@@ -0,0 +1,38 @@
+
+.class public LExample;
+.super Ljava/lang/Object;
+
+.method static constructor <init>()V
+ .locals 0
+
+ return-void
+.end method
+
+.method public test_data_handling()V
+ .locals 4
+
+ const/16 v0, 0x1234
+ sput-object v0, LExample;->data:Ljava/lang/Object;
+
+ new-instance v0, Ljava/lang/String;
+ iput-object v0, p0, LExample;->stringData:Ljava/lang/String;
+
+ return-void
+.end method
+
+.method public test_control_flow()V
+ .locals 2
+
+ const/16 v0, 0x5
+ const/16 v1, 0x8
+
+ if-gt v0, v1, :cond_true
+
+ goto :end_if
+
+:cond_true
+ return-void
+
+:end_if
+ return-void
+.end method
diff --git a/valid/code-0005.smali b/valid/code-0005.smali
new file mode 100644
index 0000000..f9b2481
--- /dev/null
+++ b/valid/code-0005.smali
@@ -0,0 +1,52 @@
+
+.class public LMyDalvikDemo;
+.super Ljava/lang/Object;
+
+.method public static main([Ljava/lang/String;)V
+ .locals 5
+
+ # Data handling
+ const/16 v0, 0x1234
+ sput-object v0, LMyDalvikDemo;->myStaticField:I
+
+ # Arithmetic and logic operations
+ const/16 v1, 0x5678
+ add-int/lit16 v2, v1, 0x9ABC
+ mul-int v3, v2, v1
+ neg-int v4, v3
+
+ # Control flow operations
+ if-nez v4, :cond_true
+ goto :cond_false
+
+:cond_true
+ const-string v4, "Condition is true"
+ goto :print_result
+
+:cond_false
+ const-string v4, "Condition is false"
+
+:print_result
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v0, v4}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method public static getStaticField()I
+ .locals 1
+
+ sget-object v0, LMyDalvikDemo;->myStaticField:I
+ return v0
+.end method
+
+.method private myPrivateMethod(I)V
+ .locals 1
+
+ add-int/lit8 v0, p1, 0x10
+ iput v0, p0, LMyDalvikDemo;->myInstanceField:I
+ return-void
+.end method
+
+.field public static myStaticField:I
+.field private myInstanceField:I
diff --git a/valid/code-0006.smali b/valid/code-0006.smali
new file mode 100644
index 0000000..1b836b6
--- /dev/null
+++ b/valid/code-0006.smali
@@ -0,0 +1,60 @@
+
+.class public LdalvikBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public static testDataHandling()V
+ .locals 3
+
+ const/4 v0, 0x1
+ add-int/lit8 v0, v0, 0x1
+ sub-int v1, v0, v1
+ mul-int v2, v0, v1
+ div-int v3, v2, v1
+ rem-int v4, v2, v1
+ return-void
+.end method
+
+.method public static testArithmeticLogicOperations()V
+ .locals 5
+
+ const/4 v0, 0x1
+ or-int v1, v0, v0
+ xor-int v2, v0, v0
+ shl-int v3, v0, v0
+ shr-int v4, v0, v0
+ return-void
+.end method
+
+.method public static testControlFlowOperations()V
+ .locals 2
+
+ const/4 v0, 0x1
+ if-eqz v0, :cond_true
+ goto :cond_false
+:cond_true
+ const-string v0, "True"
+ return-void
+:cond_false
+ const-string v1, "False"
+ return-void
+.end method
+
+.method public static testSpecificInstructions()V
+ .locals 3
+
+ new-instance v0, Ljava/lang/StringBuilder;
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
+ const/4 v1, 0x1
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+ const-string v2, "Hello"
+ invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ return-void
+.end method
diff --git a/valid/code-0007.smali b/valid/code-0007.smali
new file mode 100644
index 0000000..ea37054
--- /dev/null
+++ b/valid/code-0007.smali
@@ -0,0 +1,80 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ return-void
+.end method
+
+.method public static dataHandlingExample()V
+ .locals 4
+
+ const/16 v0, 0x1234
+ const/16 v1, 0x5678
+ const/16 v2, 0x9ABC
+ const/16 v3, 0xDEF0
+
+ sput-object v0, LSmaliDemo;->dataField:I
+
+ return-void
+.end method
+
+.method public static arithmeticAndLogicOperationsExample()V
+ .locals 4
+
+ const/4 v0, 5
+ const/4 v1, 3
+
+ add-int v2, v0, v1
+ sub-int v3, v0, v1
+ mul-int v0, v2, v3
+ div-int v1, v0, v2
+
+ return-void
+.end method
+
+.method public static controlFlowExample()V
+ .locals 1
+
+ const/4 v0, 0
+
+ if-eqz v0, :cond_0
+ goto :cond_1
+
+:cond_0
+ const/4 v0, 1
+ goto :cond_2
+
+:cond_1
+ const/4 v0, 2
+ goto :cond_2
+
+:cond_2
+ return-void
+.end method
+
+.method public static highestDexVersionExample()V
+ .locals 3
+
+ new-instance v0, Ljava/lang/StringBuilder;
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
+
+ const/16 v1, 0x1234
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+
+ const-string v1, "Hello"
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ move-result-object v1
+
+ sput-object v1, LSmaliDemo;->stringField:Ljava/lang/String;
+
+ return-void
+.end method
+
+.field private static dataField:I
+
+.field private static stringField:Ljava/lang/String;
diff --git a/valid/code-0008.smali b/valid/code-0008.smali
new file mode 100644
index 0000000..061cd0a
--- /dev/null
+++ b/valid/code-0008.smali
@@ -0,0 +1,58 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ return-void
+.end method
+
+.method public static main([Ljava/lang/String;)V
+ .locals 12
+
+ const/4 v0, 0x5
+ sget-object v1, Ljava/io/System;->out:Ljava/io/PrintStream;
+
+ const-string v2, "Hello"
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ const-string v3, "World"
+ invoke-virtual {v1, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ sget-object v4, LSmaliDemo;->instance:Ljava/lang/Object;
+
+ new-instance v5, Ljava/lang/StringBuilder;
+ const-string v6, "Sum: "
+ invoke-direct {v5, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
+
+ const/16 v7, 0x2A
+ iput v7, v5, Ljava/lang/StringBuilder;->value:Ljava/lang/Object;
+
+ invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ move-result-object v8
+
+ invoke-virtual {v1, v8}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ const/4 v9, 0x7
+ const/4 v10, 0x3
+
+ add-int v11, v9, v10
+
+ new-instance v12, Ljava/lang/StringBuilder;
+ const-string v13, "Result: "
+ invoke-direct {v12, v13}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
+
+ iput v11, v12, Ljava/lang/StringBuilder;->value:Ljava/lang/Object;
+
+ invoke-virtual {v12}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ move-result-object v14
+
+ invoke-virtual {v1, v14}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.field static instance:Ljava/lang/Object;
+
+.field public static final serialVersionUID:I = 0x0
diff --git a/valid/code-0009.smali b/valid/code-0009.smali
new file mode 100644
index 0000000..0648e34
--- /dev/null
+++ b/valid/code-0009.smali
@@ -0,0 +1,73 @@
+
+.class public LdalvikBytecodeDemo;
+
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public dataHandling()V
+ .locals 2
+
+ const/16 v0, 0x1234
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V
+
+ return-void
+.end method
+
+.method public arithmeticLogic()V
+ .locals 3
+
+ const/16 v0, 0x1234
+ const/16 v1, 0x5678
+ add-int v0, v0, v1
+ mul-int v0, v0, v1
+ xor-int v0, v0, v1
+ div-int v0, v0, v1
+
+ return-void
+.end method
+
+.method public controlFlow()V
+ .locals 1
+
+ const/16 v0, 0x1234
+ if-eqz v0, :cond_true
+
+ goto :cond_false
+
+:cond_true
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Condition true"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+
+:cond_false
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Condition false"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public highestDexInstructions()V
+ .locals 4
+
+ const/16 v0, 0x1234
+ const/16 v1, 0x5678
+ add-int v0, v0, v1
+ mul-int v0, v0, v1
+ xor-int v0, v0, v1
+ div-int v0, v0, v1
+
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v2, "Result: "
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V
+
+ return-void
+.end method
diff --git a/valid/code-0010.smali b/valid/code-0010.smali
new file mode 100644
index 0000000..7517f87
--- /dev/null
+++ b/valid/code-0010.smali
@@ -0,0 +1,35 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method public static main([Ljava/lang/String;)V
+ .locals 7
+
+ # Data handling
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello, Smali!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ # Arithmetic and logic operations
+ const v2, 5
+ const v3, 3
+ add-int/lit8 v4, v2, 2
+ mul-int v5, v2, v3
+ rem-int v6, v4, v5
+
+ # Control flow operations
+ if-eqz v6, :cond_true
+ goto :cond_false
+
+:cond_true
+ const-string v7, "Result is zero"
+ goto :print_result
+
+:cond_false
+ const-string v7, "Result is not zero"
+
+:print_result
+ invoke-virtual {v0, v7}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
diff --git a/valid/code-0011.smali b/valid/code-0011.smali
new file mode 100644
index 0000000..ac50a33
--- /dev/null
+++ b/valid/code-0011.smali
@@ -0,0 +1,82 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ return-void
+.end method
+
+.method public static main([Ljava/lang/String;)V
+ .locals 4
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Hello, World!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ new-instance v2, LSmaliDemo;
+ invoke-direct {v2}, LSmaliDemo;-><init>()V
+
+ iget-object v3, v2, LSmaliDemo;->data:Ljava/util/List;
+
+ const/4 v4, 0x1
+ aget-object v3, v3, v4
+ invoke-virtual {v3}, Ljava/lang/Object;->toString()Ljava/lang/String;
+ move-result-object v3
+
+ invoke-virtual {v0, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method public static loadData()Ljava/util/List;
+ .locals 1
+
+ new-instance v0, Ljava/util/ArrayList;
+ invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
+
+ const-string v1, "Data"
+ invoke-virtual {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
+ return-object v0
+.end method
+
+.method public static performArithmetic()V
+ .locals 2
+
+ const/4 v0, 0x5
+ add-int/lit8 v0, v0, 0x2
+ mul-int/lit8 v1, v0, 0x4
+ return-void
+.end method
+
+.method public static controlFlowDemo()V
+ .locals 1
+
+ const/16 v0, 0xa
+ const/4 v1, 0x5
+
+ if-gt v0, v1, :if_1
+
+ return-void
+
+ :if_1
+ new-instance v0, LSmaliDemo;
+ invoke-direct {v0}, LSmaliDemo;-><init>()V
+ return-object v0
+.end method
+
+.method public static highVersionInstructions()V
+ .locals 2
+
+ const/4 v0, 0x1
+ add-int/lit8 v0, v0, 0x2
+
+ const-wide/16 v1, 0x1000
+ shr-long v1, v1, v0
+
+ invoke-static {}, LSmaliDemo;->loadData()Ljava/util/List;
+
+ return-void
+.end method
diff --git a/valid/code-0012.smali b/valid/code-0012.smali
new file mode 100644
index 0000000..a0f18ec
--- /dev/null
+++ b/valid/code-0012.smali
@@ -0,0 +1,105 @@
+
+.class public LDalvikDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 1
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello from Dalvik!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public dataHandling()V
+ .locals 3
+
+ const/16 v0, 0x10
+ sput-object v0, LDalvikDemo;->dataField:Ljava/lang/Object;
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ sget-object v1, LDalvikDemo;->dataField:Ljava/lang/Object;
+ check-cast v1, Ljava/lang/String;
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ const-string v0, "Hello"
+ sput-object v0, LDalvikDemo;->dataField:Ljava/lang/Object;
+
+ sget-object v0, LDalvikDemo;->dataField:Ljava/lang/Object;
+ check-cast v0, Ljava/lang/String;
+ invoke-virtual {v0}, Ljava/lang/String;->length()I
+ move-result v1
+
+ const/4 v2, 0x5
+ if-lt v1, v2, :if_0
+ return-void
+
+ :if_0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Data is less than expected"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public arithmeticOperations()V
+ .locals 3
+
+ sget-object v0, LDalvikDemo;->numField:I
+ const/4 v1, 0x2
+ add-int v0, v0, v1
+ move-result v0
+
+ sput v0, LDalvikDemo;->numField:I
+
+ sget v0, LDalvikDemo;->numField:I
+ const/4 v1, 0x3
+ mul-int/lit8 v0, v0, 0x5
+ move-result v0
+
+ sput v0, LDalvikDemo;->numField:I
+
+ return-void
+.end method
+
+.method public controlFlowOperations()V
+ .locals 2
+
+ sget v0, LDalvikDemo;->controlField:I
+ const/4 v1, 0x1
+ if-eqz v0, :if_0
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Control flow is working"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+
+ :if_0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Control flow failed"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public highestDexVersion()V
+ .locals 2
+
+ sget v0, LDalvikDemo;->highestField:I
+ const/4 v1, 0x5
+ if-lt v0, v1, :if_0
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Highest Dex version is reached"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+
+ :if_0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Highest Dex version is not reached"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.field private dataField:Ljava/lang/Object;
+.field private numField:I
+.field private controlField:I
+.field private highestField:I
diff --git a/valid/code-0013.smali b/valid/code-0013.smali
new file mode 100644
index 0000000..07297d9
--- /dev/null
+++ b/valid/code-0013.smali
@@ -0,0 +1,98 @@
+
+.class public Lcom/example/BytecodeDemo;
+
+.super Ljava/lang/Object;
+
+# direct methods
+.method constructor()V
+ .locals 0
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+# static methods
+.method public static int_add(I I)I
+ .locals 1
+
+ add-int v0, p0, p1
+ return v0
+.end method
+
+.method public static int_sub(I I)I
+ .locals 1
+
+ sub-int v0, p0, p1
+ return v0
+.end method
+
+.method public static int_mul(I I)I
+ .locals 1
+
+ mul-int v0, p0, p1
+ return v0
+.end method
+
+.method public static int_div(I I)I
+ .locals 1
+
+ div-int v0, p0, p1
+ return v0
+.end method
+
+.method public static int_rem(I I)I
+ .locals 1
+
+ rem-int v0, p0, p1
+ return v0
+.end method
+
+.method public static if_true(I)Z
+ .locals 1
+
+ add-int/lit8 v0, p0, 1
+ return v0
+.end method
+
+.method public static if_false(I)Z
+ .locals 1
+
+ and-int/lit8 v0, p0, 2
+ return v0
+.end method
+
+.method public static if_greater(I)Z
+ .locals 1
+
+ add-int/lit8 v0, p0, 3
+ return v0
+.end method
+
+.method public static if_ge(I)Z
+ .locals 1
+
+ and-int/lit8 v0, p0, 4
+ return v0
+.end method
+
+.method public static if_lesser(I)Z
+ .locals 1
+
+ add-int/lit8 v0, p0, 5
+ return v0
+.end method
+
+.method public static if_le(I)Z
+ .locals 1
+
+ and-int/lit8 v0, p0, 6
+ return v0
+.end method
+
+.method public static print_string(Ljava/lang/String;)V
+ .locals 2
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v0, p0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ return-void
+.end method
diff --git a/valid/code-0014.smali b/valid/code-0014.smali
new file mode 100644
index 0000000..cb98fa6
--- /dev/null
+++ b/valid/code-0014.smali
@@ -0,0 +1,82 @@
+
+.class public LBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public static main([Ljava/lang/String;)V
+ .locals 4
+
+ const/16 v0, 0x1
+ invoke-static {v0}, LBytecodeDemo;->add(I)V
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Data handling test passed"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method private static add(I)V
+ .locals 2
+
+ move-result-object p0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Data handling test passed"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method public static dataHandlingTest()V
+ .locals 3
+
+ const/4 v0, 0x0
+ array-length v1, p0
+ if-eqz v1, :cond_0
+ move-result-object p0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Data handling test failed"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :cond_0
+ return-void
+.end method
+
+.method public static arithmeticAndLogicOperationsTest()V
+ .locals 4
+
+ const/16 v0, 0x10
+ add-int/lit8 v1, v0, 0x3
+ sub-int v2, v1, v0
+ mul-int/lit8 v0, v2, 0x7
+ div-int/lit8 v1, v0, 0x5
+
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v3, "Arithmetic and logic operations test passed"
+ invoke-virtual {v2, v3}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method public static controlFlowOperationsTest()V
+ .locals 1
+
+ const/4 v0, 0x1
+ if-eqz v0, :cond_0
+ move-result-object p0
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Control flow operations test failed"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :cond_0
+ return-void
+.end method
+
+.method public static specificInstructionsTest()V
+ .locals 2
+
+ const-string v0, "Hello, World!"
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
diff --git a/valid/code-0015.smali b/valid/code-0015.smali
new file mode 100644
index 0000000..c1cf6bd
--- /dev/null
+++ b/valid/code-0015.smali
@@ -0,0 +1,70 @@
+
+.class public LBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ return-void
+.end method
+
+.method public testDataHandling()V
+ .locals 3
+
+ const/16 v0, 0x1234
+ const/16 v1, 0x5678
+ add-int v0, v0, v1
+ iput v0, p0, LBytecodeDemo;->field:I
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ iget v1, p0, LBytecodeDemo;->field:I
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(I)V
+
+ return-void
+.end method
+
+.method public testArithmeticLogic()V
+ .locals 3
+
+ const/4 v0, 0x5
+ const/4 v1, 0x3
+ add-int/lit8 v2, v0, 0x2
+ mul-int v0, v2, v1
+ div-int v0, v0, v1
+ rem-int v0, v0, v1
+ neg-int v0, v0
+
+ return-void
+.end method
+
+.method public testControlFlow()V
+ .locals 1
+
+ const/4 v0, 0x5
+
+ if-eqz v0, :cond_true
+ goto :cond_false
+
+:cond_true
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Condition is true"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ goto :end_if
+
+:cond_false
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Condition is false"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+:end_if
+ return-void
+.end method
+
+.method public testDex38Instructions()V
+ .locals 2
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello from Dex 38"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
diff --git a/valid/code-0016.smali b/valid/code-0016.smali
new file mode 100644
index 0000000..6b2b66e
--- /dev/null
+++ b/valid/code-0016.smali
@@ -0,0 +1,83 @@
+
+.class public Lcom/example/BytecodeDemo;
+
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .registers 1
+
+ # Data handling
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ const-string v1, "Hello, World!"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ return-void
+.end method
+
+.method public static add(I I)I
+ .registers 2
+
+ # Arithmetic and logic operations
+ add-int v0, p0, p1
+ return v0
+.end method
+
+.method public static multiply(I I)I
+ .registers 3
+
+ # Arithmetic and logic operations
+ mul-int v0, p0, p1
+ return v0
+.end method
+
+.method public static compare(I I)Z
+ .registers 3
+
+ # Arithmetic and logic operations
+ cmp-long v0, p0, p1
+ if-nez v0, :cond_0
+ const/4 v0, 0x1
+ return v0
+
+ :cond_0
+ const/4 v0, 0x0
+ return v0
+.end method
+
+.method public static loop(I)V
+ .registers 3
+
+ # Control flow operations
+ const/16 v0, 0x0
+ :goto_0
+ if-gez p0, :cond_0
+ invoke-static {p0}, Lcom/example/BytecodeDemo;->add(I)I
+ move-result p0
+ add-int/lit8 v0, v0, 1
+ goto :goto_0
+
+ :cond_0
+ return-void
+.end method
+
+.method public static printArray([Ljava/lang/String;)V
+ .registers 3
+
+ # Control flow operations
+ const/4 v0, 0x0
+ array-length v1, p0
+ if-gez p0, :cond_0
+ goto :goto_1
+
+ :loop_0
+ aget-object v2, p0, v0
+ sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ add-int/lit8 v0, v0, 1
+ goto :loop_0
+
+ :cond_0
+ return-void
+
+ :goto_1
+ return-void
+.end method
diff --git a/valid/code-0017.smali b/valid/code-0017.smali
new file mode 100644
index 0000000..85e95af
--- /dev/null
+++ b/valid/code-0017.smali
@@ -0,0 +1,63 @@
+
+.class public LExample;
+.super Ljava/lang/Object;
+
+.method private static handleData(I)I
+ .locals 3
+
+ # Data handling: const /16 v0, 0x1234
+ const/16 v0, 0x1234
+
+ # Data handling: sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ # Data handling: const-string v2, "Data handled value: "
+ const-string v2, "Data handled value: "
+
+ # Data handling: invoke-virtual {v1, v2, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ invoke-virtual {v1, v2, v0}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method private static arithmetic(I)V
+ .locals 3
+
+ # Arithmetic and logic operations: const /16 v0, 0x5678
+ const/16 v0, 0x5678
+
+ # Arithmetic and logic operations: add-int/lit16 v1, v0, 0x1234
+ add-int/lit16 v1, v0, 0x1234
+
+ # Arithmetic and logic operations: const-string v2, "Result of addition: "
+ const-string v2, "Result of addition: "
+
+ # Arithmetic and logic operations: invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method private static controlFlow(I)V
+ .locals 3
+
+ # Control flow operations: const /16 v0, 0x9ABC
+ const/16 v0, 0x9ABC
+
+ # Control flow operations: if-nez v0, :cond_true
+ if-nez v0, :cond_true
+
+ goto :cond_false
+
+ :cond_true
+ const-string v1, "Condition is true"
+ invoke-virtual {v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ goto :end
+
+ :cond_false
+ const-string v1, "Condition is false"
+ invoke-virtual {v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :end
+ return-void
+.end method
diff --git a/valid/code-0018.smali b/valid/code-0018.smali
new file mode 100644
index 0000000..d21b9a9
--- /dev/null
+++ b/valid/code-0018.smali
@@ -0,0 +1,140 @@
+
+.class public LDalvikBytecodeDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 0
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public dataHandlingTest()V
+ .locals 4
+
+ const/16 v0, 0x1A
+ const/16 v1, 0x2B
+ add-int v2, v0, v1
+ sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(I)V
+ return-void
+.end method
+
+.method public arithmeticLogicTest()V
+ .locals 4
+
+ const/16 v0, 0x1A
+ const/16 v1, 0x2B
+ sub-int v2, v0, v1
+ neg-int v3, v2
+ mul-int/lit8 v0, v3, 0x5
+ div-int/lit8 v1, v0, 0x7
+ rem-int/lit8 v2, v1, 0x3
+ and-int v0, v2, v1
+ or-int v1, v0, v2
+ xor-int v0, v1, v2
+ return-void
+.end method
+
+.method public controlFlowTest()V
+ .locals 2
+
+ const/16 v0, 0x1A
+ if-eqz v0, :cond_1
+ goto :label_0
+
+ :cond_1
+ add-int/lit8 v0, v0, 0x5
+ :label_0
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V
+ return-void
+.end method
+
+.method public specificInstructionsTest()V
+ .locals 5
+
+ const-wide v0, 0x12345678L
+ const-wide v1, 0x9ABCDEF0L
+ add-long v2, v0, v1
+ sub-long v3, v0, v1
+ neg-long v0, v2
+ mul-long/lit16 v1, v3, 0x1234
+ div-long/lit16 v2, v1, 0x5678
+ rem-long/lit16 v3, v2, 0x9ABC
+ const-wide/16 v0, 0xDEF0L
+ shr-long/lit8 v1, v0, 0x3
+ shl-long/lit8 v0, v1, 0x7
+ return-void
+.end method
+
+.method public stringOperationsTest()V
+ .locals 4
+
+ const-string v0, "Hello"
+ const-string v1, ", World!"
+ invoke-static {v0, v1}, Ljava/lang/String;->concat(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+ move-result-object v2
+ sget-object v3, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ return-void
+.end method
+
+.method public arrayOperationsTest()V
+ .locals 5
+
+ new-array v0, 5, [I
+ const/16 v1, 0x1A
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(I)V
+ aget-object v1, v0, 0
+ const/4 v2, 0x2B
+ aput v2, v0, 1
+ anewarray I, 3
+ move-result-object v2
+ const/16 v3, 0x3C
+ sget-object v4, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v4, v3}, Ljava/io/PrintStream;->println(I)V
+ aput v3, v2, 0
+ return-void
+.end method
+
+.method public objectOperationsTest()V
+ .locals 5
+
+ new-instance v0, Ljava/lang/StringBuilder;
+ invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
+ const-string v1, "Hello"
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+ const-string v1, ", World!"
+ invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+ invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
+ move-result-object v1
+ sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v2, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ return-void
+.end method
+
+.method public exceptionHandlingTest()V
+ .locals 3
+
+ try {
+ const/16 v0, 0x1A
+ if-eqz v0, :cond_2
+ goto :label_1
+
+ :cond_2
+ const-string v0, "Divide by zero error"
+ throw-verification-error v0
+
+ :label_1
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(I)V
+ } catch Ljava/lang/ArithmeticException; {:cond_2} {
+ :catchall_3
+ move-exception v0
+ sget-object v1, Ljava/lang/System;->out:Ljava/io/PrintStream;
+ invoke-virtual {v1, v0}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ }
+ return-void
+.end method
diff --git a/valid/code-0019.smali b/valid/code-0019.smali
new file mode 100644
index 0000000..9c0d8e7
--- /dev/null
+++ b/valid/code-0019.smali
@@ -0,0 +1,65 @@
+
+.class public LSmaliDemo;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 1
+
+ invoke-direct {p0}, Ljava/lang/Object;-><init>()V
+ return-void
+.end method
+
+.method public static dataHandling()V
+ .locals 4
+ const/16 v0, 0x1234
+ sget-object v1, Ljava/lang/System.out;->out:Ljava/io/PrintStream;
+ new-instance v2, Ljava/lang/StringBuilder;
+ invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
+ const-string v3, "Data handling example: "
+ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
+ invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+ return-void
+.end method
+
+.method public static arithmeticLogicOperations()V
+ .locals 5
+ const/4 v0, 0x78
+ const/16 v1, 0x9ABC
+ add-int/lit16 v2, v0, v1
+ sub-int/lit16 v3, v1, v0
+ mul-int/lit8 v4, v0, 0x5
+ div-int/lit16 v0, v2, v3
+ rem-int/lit16 v1, v2, v3
+ return-void
+.end method
+
+.method public static controlFlowOperations()V
+ .locals 2
+ const/4 v0, 0x1
+ if-eqz v0, :cond_true
+ goto :end_if
+
+ :cond_true
+ sget-object v0, Ljava/lang/System.out;->out:Ljava/io/PrintStream;
+ const-string v1, "Control flow example: True"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+
+ :end_if
+ return-void
+.end method
+
+.method public static specificInstructions()V
+ .locals 2
+ const/4 v0, 0x1
+ if-eqz v0, :cond_true
+ goto :end_if
+
+ :cond_true
+ sget-object v0, Ljava/lang/System.out;->out:Ljava/io/PrintStream;
+ const-string v1, "Specific instructions example: True"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
+
+ :end_if
+ return-void
+.end method
diff --git a/valid/code-0020.smali b/valid/code-0020.smali
new file mode 100644
index 0000000..24d6118
--- /dev/null
+++ b/valid/code-0020.smali
@@ -0,0 +1,108 @@
+
+.class public LMyDalvikCode;
+.super Ljava/lang/Object;
+
+.method public constructor <init>()V
+ .locals 1
+
+ const/4 v0, 0x0
+ invoke-direct {p0, v0}, Ljava/lang/Object;-><init>()V
+
+ return-void
+.end method
+
+.method public test_data_handling()V
+ .locals 2
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "Data handling test"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ return-void
+.end method
+
+.method public test_arithmetic_logic_operations()V
+ .locals 3
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const/4 v1, 0x10
+ const/4 v2, 0x5
+
+ add-int/lit8 v1, v1, 0x1
+ sub-int/lit8 v2, v2, 0x1
+
+ mul-int/lit8 v1, v1, 0x2
+ div-int/lit8 v2, v2, 0x2
+
+ rem-int/lit8 v1, v1, 0x3
+ neg-int v2, v2
+
+ const-string v3, "Arithmetic logic operations: "
+ invoke-virtual {v0, v3}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+ move-object v3, v0
+
+ invoke-virtual {v3, v1}, Ljava/io/PrintStream;->println(I)V
+ invoke-virtual {v3, v2}, Ljava/io/PrintStream;->println(I)V
+
+ return-void
+.end method
+
+.method public test_control_flow_operations()V
+ .locals 4
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const/4 v1, 0x5
+ const/4 v2, 0x3
+
+ if-nez v1, :cond_true
+ goto :cond_false
+
+ :cond_true
+ const-string v1, "Control flow: True"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+ goto :end_if
+
+ :cond_false
+ const-string v1, "Control flow: False"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ :end_if
+
+ return-void
+.end method
+
+.method public test_high_dex_version()V
+ .locals 3
+ .registers 4
+
+ sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
+
+ const-string v1, "High Dex version test"
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
+
+ const/4 v2, 0x10
+ const/4 v3, 0x5
+
+ add-int/lit8 v2, v2, 0x1
+ sub-int/lit8 v3, v3, 0x1
+
+ mul-int/lit8 v2, v2, 0x2
+ div-int/lit8 v3, v3, 0x2
+
+ rem-int/lit8 v2, v2, 0x3
+ neg-int v3, v3
+
+ const-string v1, "Result: "
+ invoke-virtual {v0, v1}, Ljava/io/PrintStream;->print(Ljava/lang/String;)V
+
+ move-object v1, v0
+
+ invoke-virtual {v1, v2}, Ljava/io/PrintStream;->println(I)V
+ invoke-virtual {v1, v3}, Ljava/io/PrintStream;->println(I)V
+
+ return-void
+.end method