method Base.<init>():void
{
	.src "entryHooks.java"
	.line 27
	    0| move-object/16 v15, v25
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 27
	    9| move-object v11, v13
	.local v11, "this", Base
	   10| move-object v12, v11
	   11| invoke-direct {v12}, java.lang.Object.<init>():void
	   14| return-void
}

method Base.foo(int, java.lang.String):int
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 31
	    0| move-object/16 v13, v33
	    3| move/16 v14, v34
	    6| move-object/16 v15, v35
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 31
	   27| move-object v1, v11
	.local v1, "this", Base
	   28| move v2, v12
	.local v2, "x", int
	   29| move-object v3, v13
	.local v3, "msg", java.lang.String
	   30| sget-object v4, java.lang.System.out
	   32| const-string v5, "Base.foo(%d, '%s')\n"
	   34| const/4 v6, #+2 (0x00000002 | 2.80260e-45)
	   35| new-array v6, v6, java.lang.Object[]
	   37| move-object v10, v6
	   38| move-object v6, v10
	   39| move-object v7, v10
	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
	   41| move v9, v2
	   42| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
	   45| move-result-object v9
	   46| aput-object v9, v7, v8
	   48| move-object v10, v6
	   49| move-object v6, v10
	   50| move-object v7, v10
	   51| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   52| move-object v9, v3
	   53| aput-object v9, v7, v8
	   55| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   58| move-result-object v4
	.line 32
	   59| move v4, v2
	   60| move v1, v4
	.end_local v1
	   61| return v1
}

method Derived.<init>():void
{
	.src "entryHooks.java"
	.line 36
	    0| move-object/16 v15, v25
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 36
	    9| move-object v11, v13
	.local v11, "this", Derived
	   10| move-object v12, v11
	   11| invoke-direct {v12}, Base.<init>():void
	   14| return-void
}

method Derived.foo(int, java.lang.String):int
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 40
	    0| move-object/16 v13, v33
	    3| move/16 v14, v34
	    6| move-object/16 v15, v35
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 40
	   27| move-object v1, v11
	.local v1, "this", Derived
	   28| move v2, v12
	.local v2, "x", int
	   29| move-object v3, v13
	.local v3, "msg", java.lang.String
	   30| sget-object v4, java.lang.System.out
	   32| const-string v5, "Derived.foo(%d, '%s')\n"
	   34| const/4 v6, #+2 (0x00000002 | 2.80260e-45)
	   35| new-array v6, v6, java.lang.Object[]
	   37| move-object v10, v6
	   38| move-object v6, v10
	   39| move-object v7, v10
	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
	   41| move v9, v2
	   42| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
	   45| move-result-object v9
	   46| aput-object v9, v7, v8
	   48| move-object v10, v6
	   49| move-object v6, v10
	   50| move-object v7, v10
	   51| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   52| move-object v9, v3
	   53| aput-object v9, v7, v8
	   55| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   58| move-result-object v4
	.line 41
	   59| move v4, v2
	   60| const/4 v5, #+2 (0x00000002 | 2.80260e-45)
	   61| mul-int/lit8 v4, v4, #+2 (0x00000002 | 2.80260e-45)
	   63| move v1, v4
	.end_local v1
	   64| return v1
}

method Target.<init>():void
{
	.src "entryHooks.java"
	.line 45
	    0| move-object/16 v15, v25
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 45
	    9| move-object v11, v13
	.local v11, "this", Target
	   10| move-object v12, v11
	   11| invoke-direct {v12}, java.lang.Object.<init>():void
	   14| return-void
}

method Target.main(java.lang.String[]):void
{
	.params "?"
	.src "entryHooks.java"
	.line 51
	    0| move-object/16 v15, v31
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 51
	    9| move-object v5, v13
	.local v5, "args", java.lang.String[]
	   10| sget-object v6, java.lang.System.out
	   12| const-string v7, "Hello, world!"
	   14| invoke-virtual {v6,v7}, java.io.PrintStream.println(java.lang.String):void
	.line 52
	   17| sget-object v6, java.lang.System.out
	   19| const-string v7, "final = %d\n"
	   21| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   22| new-array v8, v8, java.lang.Object[]
	   24| move-object v12, v8
	   25| move-object v8, v12
	   26| move-object v9, v12
	   27| const/4 v10, #+0 (0x00000000 | 0.00000)
	   28| invoke-static {}, Target.test():int
	   31| move-result v11
	   32| invoke-static {v11}, java.lang.Integer.valueOf(int):java.lang.Integer
	   35| move-result-object v11
	   36| aput-object v11, v9, v10
	   38| invoke-virtual {v6,v7,v8}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   41| move-result-object v6
	.line 53
	   42| sget-object v6, java.lang.System.out
	   44| const-string v7, "Good bye!"
	   46| invoke-virtual {v6,v7}, java.io.PrintStream.println(java.lang.String):void
	.line 54
	   49| return-void
}

method Target.test():int
{
	.src "entryHooks.java"
	.line 58
	.prologue_end
	.line 58
	    0| new-instance v1, Target
	    2| move-object v4, v1
	    3| move-object v1, v4
	    4| move-object v2, v4
	    5| invoke-direct {v2}, Target.<init>():void
	    8| move-object v0, v1
	.line 59
	.local v0, "obj", Target
	    9| move-object v1, v0
	   10| new-instance v2, Derived
	   12| move-object v4, v2
	   13| move-object v2, v4
	   14| move-object v3, v4
	   15| invoke-direct {v3}, Derived.<init>():void
	   18| iput-object v2, v1, Target.test
	.line 60
	   20| move-object v1, v0
	   21| const/4 v2, #+3 (0x00000003 | 4.20390e-45)
	   22| const-string v3, "Testing..."
	   24| invoke-virtual {v1,v2,v3}, Target.foo(int, java.lang.String):int
	   27| move-result v1
	   28| move v0, v1
	.end_local v0
	   29| return v0
}

method Target.foo(int):int
{
	.params "?"
	.src "entryHooks.java"
	.line 74
	    0| move-object/16 v14, v26
	    3| move/16 v15, v27
	    6| move-object/16 v13, v14
	    9| move/16 v14, v15
	   12| move-object/16 v12, v13
	   15| move/16 v13, v14
	.prologue_end
	.line 74
	   18| move-object v9, v12
	.local v9, "this", Target
	   19| move v10, v13
	.local v10, "x", int
	   20| const/4 v11, #+1 (0x00000001 | 1.40130e-45)
	   21| move v9, v11
	.end_local v9
	   22| return v9
}

method Target.foo(int, int):int
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 75
	    0| move-object/16 v13, v27
	    3| move/16 v14, v28
	    6| move/16 v15, v29
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move/16 v13, v14
	.prologue_end
	.line 75
	   27| move-object v7, v11
	.local v7, "this", Target
	   28| move v8, v12
	.local v8, "x", int
	   29| move v9, v13
	.local v9, "y", int
	   30| const/4 v10, #+2 (0x00000002 | 2.80260e-45)
	   31| move v7, v10
	.end_local v7
	   32| return v7
}

method Target.foo(int, java.lang.String):int
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 65
	    0| move-object/16 v13, v32
	    3| move/16 v14, v33
	    6| move-object/16 v15, v34
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 65
	   27| move-object v2, v11
	.local v2, "this", Target
	   28| move v3, v12
	.local v3, "x", int
	   29| move-object v4, v13
	.local v4, "msg", java.lang.String
	   30| const/4 v7, #+0 (0x00000000 | 0.00000)
	   31| move v5, v7
	.line 66
	.local v5, "sum", int
	   32| const/4 v7, #+0 (0x00000000 | 0.00000)
	   33| move v6, v7
Label_1:
	.local v6, "i", int
	   34| move v7, v6
	   35| move v8, v3
	   36| if-ge v7, v8, Label_2
	.line 68
	   38| move v7, v5
	   39| move-object v8, v2
	   40| iget-object v8, v8, Target.test
	   42| move v9, v6
	   43| move-object v10, v4
	   44| invoke-virtual {v8,v9,v10}, Base.foo(int, java.lang.String):int
	   47| move-result v8
	   48| add-int/2addr v7, v8
	   49| move v5, v7
	.line 66
	   50| add-int/lit8 v6, v6, #+1 (0x00000001 | 1.40130e-45)
	   52| goto/16 Label_1
Label_2:
	.line 70
	   54| move v7, v5
	   55| move v2, v7
	.end_local v2
	   56| return v2
}

method Target.foo(int, java.lang.String, java.lang.String):int
{
	.params "?", "?", "?"
	.src "entryHooks.java"
	.line 76
	    0| move-object/16 v12, v28
	    3| move/16 v13, v29
	    6| move-object/16 v14, v30
	    9| move-object/16 v15, v31
	   12| move-object/16 v11, v12
	   15| move/16 v12, v13
	   18| move-object/16 v13, v14
	   21| move-object/16 v14, v15
	   24| move-object/16 v10, v11
	   27| move/16 v11, v12
	   30| move-object/16 v12, v13
	   33| move-object/16 v13, v14
	.prologue_end
	.line 76
	   36| move-object v5, v10
	.local v5, "this", Target
	   37| move v6, v11
	.local v6, "x", int
	   38| move-object v7, v12
	.local v7, "msg", java.lang.String
	   39| move-object v8, v13
	.local v8, "msg2", java.lang.String
	   40| const/4 v9, #+3 (0x00000003 | 4.20390e-45)
	   41| move v5, v9
	.end_local v5
	   42| return v5
}

method Target.foo(int, java.lang.String[]):int
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 77
	    0| move-object/16 v13, v27
	    3| move/16 v14, v28
	    6| move-object/16 v15, v29
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 77
	   27| move-object v7, v11
	.local v7, "this", Target
	   28| move v8, v12
	.local v8, "x", int
	   29| move-object v9, v13
	.local v9, "msgs", java.lang.String[]
	   30| const/4 v10, #+4 (0x00000004 | 5.60519e-45)
	   31| move v7, v10
	.end_local v7
	   32| return v7
}

method Target.foo(int, java.lang.String[][]):java.lang.Integer
{
	.params "?", "?"
	.src "entryHooks.java"
	.line 78
	    0| move-object/16 v13, v27
	    3| move/16 v14, v28
	    6| move-object/16 v15, v29
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 78
	   27| move-object v7, v11
	.local v7, "this", Target
	   28| move v8, v12
	.local v8, "x", int
	   29| move-object v9, v13
	.local v9, "msgs", java.lang.String[][]
	   30| const/4 v10, #+5 (0x00000005 | 7.00649e-45)
	   31| invoke-static {v10}, java.lang.Integer.valueOf(int):java.lang.Integer
	   34| move-result-object v10
	   35| move-object v7, v10
	.end_local v7
	   36| return-object v7
}

method Target.foo():void
{
	.src "entryHooks.java"
	.line 73
	    0| move-object/16 v15, v23
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 73
	    9| return-void
}

method Tracer.<init>():void
{
	.src "entryHooks.java"
	.line 2
	    0| move-object/16 v15, v25
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 2
	    9| move-object v11, v13
	.local v11, "this", Tracer
	   10| move-object v12, v11
	   11| invoke-direct {v12}, java.lang.Object.<init>():void
	   14| return-void
}

method Tracer.onEntry(java.lang.String):void
{
	.params "?"
	.src "entryHooks.java"
	.line 6
	    0| move-object/16 v15, v28
	    3| move-object/16 v14, v15
	    6| move-object/16 v13, v14
	.prologue_end
	.line 6
	    9| move-object v8, v13
	.local v8, "methodName", java.lang.String
	   10| sget-object v9, java.lang.System.out
	   12| new-instance v10, java.lang.StringBuilder
	   14| move-object v12, v10
	   15| move-object v10, v12
	   16| move-object v11, v12
	   17| invoke-direct {v11}, java.lang.StringBuilder.<init>():void
	   20| const-string v11, "OnEntry("
	   22| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
	   25| move-result-object v10
	   26| move-object v11, v8
	   27| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
	   30| move-result-object v10
	   31| const-string v11, ")"
	   33| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
	   36| move-result-object v10
	   37| invoke-virtual {v10}, java.lang.StringBuilder.toString():java.lang.String
	   40| move-result-object v10
	   41| invoke-virtual {v9,v10}, java.io.PrintStream.println(java.lang.String):void
	.line 7
	   44| return-void
}

method Tracer.onFooEntry(Target, int, java.lang.String):void
{
	.params "?", "?", "?"
	.src "entryHooks.java"
	.line 11
	    0| move-object/16 v13, v33
	    3| move/16 v14, v34
	    6| move-object/16 v15, v35
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 11
	   27| move-object v1, v11
	.local v1, "__this", Target
	   28| move v2, v12
	.local v2, "x", int
	   29| move-object v3, v13
	.local v3, "msg", java.lang.String
	   30| sget-object v4, java.lang.System.out
	   32| const-string v5, ">>> onFooEntry(%s, %d, %s)\n"
	   34| const/4 v6, #+3 (0x00000003 | 4.20390e-45)
	   35| new-array v6, v6, java.lang.Object[]
	   37| move-object v10, v6
	   38| move-object v6, v10
	   39| move-object v7, v10
	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
	   41| move-object v9, v1
	   42| aput-object v9, v7, v8
	   44| move-object v10, v6
	   45| move-object v6, v10
	   46| move-object v7, v10
	   47| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   48| move v9, v2
	   49| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
	   52| move-result-object v9
	   53| aput-object v9, v7, v8
	   55| move-object v10, v6
	   56| move-object v6, v10
	   57| move-object v7, v10
	   58| const/4 v8, #+2 (0x00000002 | 2.80260e-45)
	   59| move-object v9, v3
	   60| aput-object v9, v7, v8
	   62| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   65| move-result-object v4
	.line 12
	   66| return-void
}

method Tracer.onFooExit(int):int
{
	.params "?"
	.src "entryHooks.java"
	.line 16
	    0| move/16 v15, v31
	    3| move/16 v14, v15
	    6| move/16 v13, v14
	.prologue_end
	.line 16
	    9| move v5, v13
	.local v5, "retValue", int
	   10| sget-object v6, java.lang.System.out
	   12| const-string v7, ">>> onFooExit(%d)\n"
	   14| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   15| new-array v8, v8, java.lang.Object[]
	   17| move-object v12, v8
	   18| move-object v8, v12
	   19| move-object v9, v12
	   20| const/4 v10, #+0 (0x00000000 | 0.00000)
	   21| move v11, v5
	   22| invoke-static {v11}, java.lang.Integer.valueOf(int):java.lang.Integer
	   25| move-result-object v11
	   26| aput-object v11, v9, v10
	   28| invoke-virtual {v6,v7,v8}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   31| move-result-object v6
	.line 17
	   32| move v6, v5
	   33| const/16 v7, #+100 (0x00000064 | 1.40130e-43)
	   35| add-int/lit8 v6, v6, #+100 (0x00000064 | 1.40130e-43)
	   37| move v5, v6
	.end_local v5
	   38| return v5
}

method Tracer.wrapFoo(Base, int, java.lang.String):int
{
	.params "?", "?", "?"
	.src "entryHooks.java"
	.line 22
	    0| move-object/16 v13, v33
	    3| move/16 v14, v34
	    6| move-object/16 v15, v35
	    9| move-object/16 v12, v13
	   12| move/16 v13, v14
	   15| move-object/16 v14, v15
	   18| move-object/16 v11, v12
	   21| move/16 v12, v13
	   24| move-object/16 v13, v14
	.prologue_end
	.line 22
	   27| move-object v1, v11
	.local v1, "_this", Base
	   28| move v2, v12
	.local v2, "x", int
	   29| move-object v3, v13
	.local v3, "msg", java.lang.String
	   30| sget-object v4, java.lang.System.out
	   32| const-string v5, ">>> %s.test(%d, %s)\n"
	   34| const/4 v6, #+3 (0x00000003 | 4.20390e-45)
	   35| new-array v6, v6, java.lang.Object[]
	   37| move-object v10, v6
	   38| move-object v6, v10
	   39| move-object v7, v10
	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
	   41| move-object v9, v1
	   42| invoke-virtual {v9}, java.lang.Object.getClass():java.lang.Class
	   45| move-result-object v9
	   46| invoke-virtual {v9}, java.lang.Class.getName():java.lang.String
	   49| move-result-object v9
	   50| aput-object v9, v7, v8
	   52| move-object v10, v6
	   53| move-object v6, v10
	   54| move-object v7, v10
	   55| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
	   56| move v9, v2
	   57| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
	   60| move-result-object v9
	   61| aput-object v9, v7, v8
	   63| move-object v10, v6
	   64| move-object v6, v10
	   65| move-object v7, v10
	   66| const/4 v8, #+2 (0x00000002 | 2.80260e-45)
	   67| move-object v9, v3
	   68| aput-object v9, v7, v8
	   70| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
	   73| move-result-object v4
	.line 23
	   74| move-object v4, v1
	   75| move v5, v2
	   76| move-object v6, v3
	   77| invoke-virtual {v4,v5,v6}, Base.foo(int, java.lang.String):int
	   80| move-result v4
	   81| const/16 v5, #+10 (0x0000000a | 1.40130e-44)
	   83| add-int/lit8 v4, v4, #+10 (0x0000000a | 1.40130e-44)
	   85| move v1, v4
	.end_local v1
	   86| return v1
}