Initial push.
diff --git a/src/test/smali/chain-of-loops/Test.java b/src/test/smali/chain-of-loops/Test.java
new file mode 100644
index 0000000..77d335d
--- /dev/null
+++ b/src/test/smali/chain-of-loops/Test.java
@@ -0,0 +1,25 @@
+// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+public class Test {
+  public int b(int i, String s) {
+    throw new RuntimeException("b(ILjava/lang/String;)");
+  }
+
+  public int b(Test t) {
+    throw new RuntimeException("b(LTest;)");
+  }
+
+  public static int f(int i0, int i1) {
+    throw new RuntimeException("f(II)");
+  }
+
+  public static void main(String[] args) {
+    try {
+      new TestObject().method();
+    } catch (Exception e) {
+      System.out.println(e);
+    }
+  }
+}
diff --git a/src/test/smali/chain-of-loops/TestObject.java b/src/test/smali/chain-of-loops/TestObject.java
new file mode 100644
index 0000000..85cb78a
--- /dev/null
+++ b/src/test/smali/chain-of-loops/TestObject.java
@@ -0,0 +1,9 @@
+// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+public class TestObject {
+  public final int method() {
+    return 0;
+  }
+}
diff --git a/src/test/smali/chain-of-loops/TestObject.smali b/src/test/smali/chain-of-loops/TestObject.smali
new file mode 100644
index 0000000..d516ee3
--- /dev/null
+++ b/src/test/smali/chain-of-loops/TestObject.smali
@@ -0,0 +1,1028 @@
+# Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+.class public final LTestObject;
+.super Ljava/lang/Object;
+
+.field public i:I
+.field public e:Ljava/lang/String;
+.field public z:Ljava/lang/String;
+.field public f:LTest;
+.field public a:[LTest;
+
+.method public final method()I
+    .registers 7
+    .prologue
+    const/4 v5, 0x1
+    const/4 v1, 0x0
+    invoke-virtual {p0}, LTestObject;->method2()I
+    move-result v0
+    iget-object v2, p0, LTestObject;->e:Ljava/lang/String;
+    if-eqz v2, :cond_1b
+    iget-object v2, p0, LTestObject;->e:Ljava/lang/String;
+    const-string v3, ""
+    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+    move-result v2
+    if-nez v2, :cond_1b
+    iget-object v2, p0, LTestObject;->e:Ljava/lang/String;
+    invoke-static {v5, v2}, LTest;->b(ILjava/lang/String;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_1b
+    iget-object v2, p0, LTestObject;->f:LTest;
+    if-eqz v2, :cond_27
+    const/4 v2, 0x2
+    iget-object v3, p0, LTestObject;->f:LTest;
+    invoke-static {v2, v3}, LTest;->d(ILTest;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_27
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_47
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_47
+    move v2, v0
+    move v0, v1
+    :goto_32
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_46
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_43
+    const/4 v4, 0x3
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_43
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_32
+    :cond_46
+    move v0, v2
+    :cond_47
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_67
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_67
+    move v2, v0
+    move v0, v1
+    :goto_52
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_66
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_63
+    const/4 v4, 0x4
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_63
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_52
+    :cond_66
+    move v0, v2
+    :cond_67
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_87
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_87
+    move v2, v0
+    move v0, v1
+    :goto_72
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_86
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_83
+    const/4 v4, 0x5
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_83
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_72
+    :cond_86
+    move v0, v2
+    :cond_87
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_a7
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_a7
+    move v2, v0
+    move v0, v1
+    :goto_92
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_a6
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_a3
+    const/4 v4, 0x6
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_a3
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_92
+    :cond_a6
+    move v0, v2
+    :cond_a7
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_c7
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_c7
+    move v2, v0
+    move v0, v1
+    :goto_b2
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_c6
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_c3
+    const/4 v4, 0x7
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_c3
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_b2
+    :cond_c6
+    move v0, v2
+    :cond_c7
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_e8
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_e8
+    move v2, v0
+    move v0, v1
+    :goto_d2
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_e7
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_e4
+    const/16 v4, 0x8
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_e4
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_d2
+    :cond_e7
+    move v0, v2
+    :cond_e8
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_109
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_109
+    move v2, v0
+    move v0, v1
+    :goto_f3
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_108
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_105
+    const/16 v4, 0x9
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_105
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_f3
+    :cond_108
+    move v0, v2
+    :cond_109
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_12a
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_12a
+    move v2, v0
+    move v0, v1
+    :goto_114
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_129
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_126
+    const/16 v4, 0xa
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_126
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_114
+    :cond_129
+    move v0, v2
+    :cond_12a
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_14b
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_14b
+    move v2, v0
+    move v0, v1
+    :goto_135
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_14a
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_147
+    const/16 v4, 0xb
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_147
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_135
+    :cond_14a
+    move v0, v2
+    :cond_14b
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_16c
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_16c
+    move v2, v0
+    move v0, v1
+    :goto_156
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_16b
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_168
+    const/16 v4, 0xc
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_168
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_156
+    :cond_16b
+    move v0, v2
+    :cond_16c
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_18d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_18d
+    move v2, v0
+    move v0, v1
+    :goto_177
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_18c
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_189
+    const/16 v4, 0xd
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_189
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_177
+    :cond_18c
+    move v0, v2
+    :cond_18d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_1ae
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_1ae
+    move v2, v0
+    move v0, v1
+    :goto_198
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_1ad
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_1aa
+    const/16 v4, 0xe
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_1aa
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_198
+    :cond_1ad
+    move v0, v2
+    :cond_1ae
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_1cf
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_1cf
+    move v2, v0
+    move v0, v1
+    :goto_1b9
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_1ce
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_1cb
+    const/16 v4, 0xf
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_1cb
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_1b9
+    :cond_1ce
+    move v0, v2
+    :cond_1cf
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_1f0
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_1f0
+    move v2, v0
+    move v0, v1
+    :goto_1da
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_1ef
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_1ec
+    const/16 v4, 0x10
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_1ec
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_1da
+    :cond_1ef
+    move v0, v2
+    :cond_1f0
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_211
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_211
+    move v2, v0
+    move v0, v1
+    :goto_1fb
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_210
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_20d
+    const/16 v4, 0x11
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_20d
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_1fb
+    :cond_210
+    move v0, v2
+    :cond_211
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_232
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_232
+    move v2, v0
+    move v0, v1
+    :goto_21c
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_231
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_22e
+    const/16 v4, 0x12
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_22e
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_21c
+    :cond_231
+    move v0, v2
+    :cond_232
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_253
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_253
+    move v2, v0
+    move v0, v1
+    :goto_23d
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_252
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_24f
+    const/16 v4, 0x13
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_24f
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_23d
+    :cond_252
+    move v0, v2
+    :cond_253
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_274
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_274
+    move v2, v0
+    move v0, v1
+    :goto_25e
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_273
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_270
+    const/16 v4, 0x14
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_270
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_25e
+    :cond_273
+    move v0, v2
+    :cond_274
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    if-eqz v2, :cond_28b
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    const-string v3, ""
+    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+    move-result v2
+    if-nez v2, :cond_28b
+    const/16 v2, 0x15
+    iget-object v3, p0, LTestObject;->z:Ljava/lang/String;
+    invoke-static {v2, v3}, LTest;->b(ILjava/lang/String;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_28b
+    iget v2, p0, LTestObject;->i:I
+    if-eq v2, v5, :cond_298
+    const/16 v2, 0x16
+    iget v3, p0, LTestObject;->i:I
+    invoke-static {v2, v3}, LTest;->f(II)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_298
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_2b9
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_2b9
+    move v2, v0
+    move v0, v1
+    :goto_2a3
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_2b8
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_2b5
+    const/16 v4, 0x17
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_2b5
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_2a3
+    :cond_2b8
+    move v0, v2
+    :cond_2b9
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    if-eqz v2, :cond_2d0
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    const-string v3, ""
+    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+    move-result v2
+    if-nez v2, :cond_2d0
+    const/16 v2, 0x18
+    iget-object v3, p0, LTestObject;->z:Ljava/lang/String;
+    invoke-static {v2, v3}, LTest;->b(ILjava/lang/String;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_2d0
+    iget-object v2, p0, LTest;->M:LTest;
+    if-eqz v2, :cond_2dd
+    const/16 v2, 0x19
+    iget-object v3, p0, LTest;->M:LTest;
+    invoke-static {v2, v3}, LTest;->d(ILTest;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_2dd
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    if-eqz v2, :cond_2f4
+    iget-object v2, p0, LTestObject;->z:Ljava/lang/String;
+    const-string v3, ""
+    invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
+    move-result v2
+    if-nez v2, :cond_2f4
+    const/16 v2, 0x1a
+    iget-object v3, p0, LTestObject;->z:Ljava/lang/String;
+    invoke-static {v2, v3}, LTest;->b(ILjava/lang/String;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_2f4
+    iget-object v2, p0, LTest;->o:[LTest;
+    if-eqz v2, :cond_315
+    iget-object v2, p0, LTest;->o:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_315
+    move v2, v0
+    move v0, v1
+    :goto_2ff
+    iget-object v3, p0, LTest;->o:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_314
+    iget-object v3, p0, LTest;->o:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_311
+    const/16 v4, 0x1b
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_311
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_2ff
+    :cond_314
+    move v0, v2
+    :cond_315
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_336
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_336
+    move v2, v0
+    move v0, v1
+    :goto_320
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_335
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_332
+    const/16 v4, 0x1c
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_332
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_320
+    :cond_335
+    move v0, v2
+    :cond_336
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_357
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_357
+    move v2, v0
+    move v0, v1
+    :goto_341
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_356
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_353
+    const/16 v4, 0x1d
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_353
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_341
+    :cond_356
+    move v0, v2
+    :cond_357
+    iget-object v2, p0, LTest;->t:[LTest;
+    if-eqz v2, :cond_378
+    iget-object v2, p0, LTest;->t:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_378
+    move v2, v0
+    move v0, v1
+    :goto_362
+    iget-object v3, p0, LTest;->t:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_377
+    iget-object v3, p0, LTest;->t:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_374
+    const/16 v4, 0x1e
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_374
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_362
+    :cond_377
+    move v0, v2
+    :cond_378
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_399
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_399
+    move v2, v0
+    move v0, v1
+    :goto_383
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_398
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_395
+    const/16 v4, 0x1f
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_395
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_383
+    :cond_398
+    move v0, v2
+    :cond_399
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_3ba
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_3ba
+    move v2, v0
+    move v0, v1
+    :goto_3a4
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_3b9
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_3b6
+    const/16 v4, 0x20
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_3b6
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_3a4
+    :cond_3b9
+    move v0, v2
+    :cond_3ba
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_3db
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_3db
+    move v2, v0
+    move v0, v1
+    :goto_3c5
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_3da
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_3d7
+    const/16 v4, 0x21
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_3d7
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_3c5
+    :cond_3da
+    move v0, v2
+    :cond_3db
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_3fc
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_3fc
+    move v2, v0
+    move v0, v1
+    :goto_3e6
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_3fb
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_3f8
+    const/16 v4, 0x22
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_3f8
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_3e6
+    :cond_3fb
+    move v0, v2
+    :cond_3fc
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_41d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_41d
+    move v2, v0
+    move v0, v1
+    :goto_407
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_41c
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_419
+    const/16 v4, 0x23
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_419
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_407
+    :cond_41c
+    move v0, v2
+    :cond_41d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_43e
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_43e
+    move v2, v0
+    move v0, v1
+    :goto_428
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_43d
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_43a
+    const/16 v4, 0x24
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_43a
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_428
+    :cond_43d
+    move v0, v2
+    :cond_43e
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_45f
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_45f
+    move v2, v0
+    move v0, v1
+    :goto_449
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_45e
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_45b
+    const/16 v4, 0x25
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_45b
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_449
+    :cond_45e
+    move v0, v2
+    :cond_45f
+    iget-object v2, p0, LTest;->T:LTest;
+    if-eqz v2, :cond_46c
+    const/16 v2, 0x26
+    iget-object v3, p0, LTest;->T:LTest;
+    invoke-static {v2, v3}, LTest;->d(ILTest;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_46c
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_48d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_48d
+    move v2, v0
+    move v0, v1
+    :goto_477
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_48c
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_489
+    const/16 v4, 0x27
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_489
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_477
+    :cond_48c
+    move v0, v2
+    :cond_48d
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_4ae
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_4ae
+    move v2, v0
+    move v0, v1
+    :goto_498
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_4ad
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_4aa
+    const/16 v4, 0x28
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_4aa
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_498
+    :cond_4ad
+    move v0, v2
+    :cond_4ae
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_4cf
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_4cf
+    move v2, v0
+    move v0, v1
+    :goto_4b9
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_4ce
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_4cb
+    const/16 v4, 0x29
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_4cb
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_4b9
+    :cond_4ce
+    move v0, v2
+    :cond_4cf
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_4f0
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_4f0
+    move v2, v0
+    move v0, v1
+    :goto_4da
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_4ef
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_4ec
+    const/16 v4, 0x2a
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_4ec
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_4da
+    :cond_4ef
+    move v0, v2
+    :cond_4f0
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_511
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_511
+    move v2, v0
+    move v0, v1
+    :goto_4fb
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_510
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_50d
+    const/16 v4, 0x2b
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_50d
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_4fb
+    :cond_510
+    move v0, v2
+    :cond_511
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_532
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_532
+    move v2, v0
+    move v0, v1
+    :goto_51c
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_531
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_52e
+    const/16 v4, 0x2c
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_52e
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_51c
+    :cond_531
+    move v0, v2
+    :cond_532
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_553
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_553
+    move v2, v0
+    move v0, v1
+    :goto_53d
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    array-length v3, v3
+    if-ge v0, v3, :cond_552
+    iget-object v3, p0, LTestObject;->a:[LTest;
+    aget-object v3, v3, v0
+    if-eqz v3, :cond_54f
+    const/16 v4, 0x2d
+    invoke-static {v4, v3}, LTest;->d(ILTest;)I
+    move-result v3
+    add-int/2addr v2, v3
+    :cond_54f
+    add-int/lit8 v0, v0, 0x1
+    goto :goto_53d
+    :cond_552
+    move v0, v2
+    :cond_553
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    if-eqz v2, :cond_571
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-lez v2, :cond_571
+    :goto_55c
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    array-length v2, v2
+    if-ge v1, v2, :cond_571
+    iget-object v2, p0, LTestObject;->a:[LTest;
+    aget-object v2, v2, v1
+    if-eqz v2, :cond_56e
+    const/16 v3, 0x2e
+    invoke-static {v3, v2}, LTest;->d(ILTest;)I
+    move-result v2
+    add-int/2addr v0, v2
+    :cond_56e
+    add-int/lit8 v1, v1, 0x1
+    goto :goto_55c
+    :cond_571
+    iget-object v1, p0, LTest;->V:LTest;
+    if-eqz v1, :cond_57e
+    const/16 v1, 0x64
+    iget-object v2, p0, LTest;->V:LTest;
+    invoke-static {v1, v2}, LTest;->d(ILTest;)I
+    move-result v1
+    add-int/2addr v0, v1
+    :cond_57e
+    return v0
+.end method
+
+.method public final method2()I
+    .registers 1
+    .prologue
+    const/4 v0, 0x1
+    return v0
+.end method