1
2method Base.<init>():void
3{
4	.src "entryHooks.java"
5	.line 27
6	    0| move-object/16 v15, v25
7	    3| move-object/16 v14, v15
8	    6| move-object/16 v13, v14
9	.prologue_end
10	.line 27
11	    9| move-object v11, v13
12	.local v11, "this", Base
13	   10| move-object v12, v11
14	   11| invoke-direct {v12}, java.lang.Object.<init>():void
15	   14| return-void
16}
17
18method Base.foo(int, java.lang.String):int
19{
20	.params "?", "?"
21	.src "entryHooks.java"
22	.line 31
23	    0| move-object/16 v13, v33
24	    3| move/16 v14, v34
25	    6| move-object/16 v15, v35
26	    9| move-object/16 v12, v13
27	   12| move/16 v13, v14
28	   15| move-object/16 v14, v15
29	   18| move-object/16 v11, v12
30	   21| move/16 v12, v13
31	   24| move-object/16 v13, v14
32	.prologue_end
33	.line 31
34	   27| move-object v1, v11
35	.local v1, "this", Base
36	   28| move v2, v12
37	.local v2, "x", int
38	   29| move-object v3, v13
39	.local v3, "msg", java.lang.String
40	   30| sget-object v4, java.lang.System.out
41	   32| const-string v5, "Base.foo(%d, '%s')\n"
42	   34| const/4 v6, #+2 (0x00000002 | 2.80260e-45)
43	   35| new-array v6, v6, java.lang.Object[]
44	   37| move-object v10, v6
45	   38| move-object v6, v10
46	   39| move-object v7, v10
47	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
48	   41| move v9, v2
49	   42| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
50	   45| move-result-object v9
51	   46| aput-object v9, v7, v8
52	   48| move-object v10, v6
53	   49| move-object v6, v10
54	   50| move-object v7, v10
55	   51| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
56	   52| move-object v9, v3
57	   53| aput-object v9, v7, v8
58	   55| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
59	   58| move-result-object v4
60	.line 32
61	   59| move v4, v2
62	   60| move v1, v4
63	.end_local v1
64	   61| return v1
65}
66
67method Derived.<init>():void
68{
69	.src "entryHooks.java"
70	.line 36
71	    0| move-object/16 v15, v25
72	    3| move-object/16 v14, v15
73	    6| move-object/16 v13, v14
74	.prologue_end
75	.line 36
76	    9| move-object v11, v13
77	.local v11, "this", Derived
78	   10| move-object v12, v11
79	   11| invoke-direct {v12}, Base.<init>():void
80	   14| return-void
81}
82
83method Derived.foo(int, java.lang.String):int
84{
85	.params "?", "?"
86	.src "entryHooks.java"
87	.line 40
88	    0| move-object/16 v13, v33
89	    3| move/16 v14, v34
90	    6| move-object/16 v15, v35
91	    9| move-object/16 v12, v13
92	   12| move/16 v13, v14
93	   15| move-object/16 v14, v15
94	   18| move-object/16 v11, v12
95	   21| move/16 v12, v13
96	   24| move-object/16 v13, v14
97	.prologue_end
98	.line 40
99	   27| move-object v1, v11
100	.local v1, "this", Derived
101	   28| move v2, v12
102	.local v2, "x", int
103	   29| move-object v3, v13
104	.local v3, "msg", java.lang.String
105	   30| sget-object v4, java.lang.System.out
106	   32| const-string v5, "Derived.foo(%d, '%s')\n"
107	   34| const/4 v6, #+2 (0x00000002 | 2.80260e-45)
108	   35| new-array v6, v6, java.lang.Object[]
109	   37| move-object v10, v6
110	   38| move-object v6, v10
111	   39| move-object v7, v10
112	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
113	   41| move v9, v2
114	   42| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
115	   45| move-result-object v9
116	   46| aput-object v9, v7, v8
117	   48| move-object v10, v6
118	   49| move-object v6, v10
119	   50| move-object v7, v10
120	   51| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
121	   52| move-object v9, v3
122	   53| aput-object v9, v7, v8
123	   55| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
124	   58| move-result-object v4
125	.line 41
126	   59| move v4, v2
127	   60| const/4 v5, #+2 (0x00000002 | 2.80260e-45)
128	   61| mul-int/lit8 v4, v4, #+2 (0x00000002 | 2.80260e-45)
129	   63| move v1, v4
130	.end_local v1
131	   64| return v1
132}
133
134method Target.<init>():void
135{
136	.src "entryHooks.java"
137	.line 45
138	    0| move-object/16 v15, v25
139	    3| move-object/16 v14, v15
140	    6| move-object/16 v13, v14
141	.prologue_end
142	.line 45
143	    9| move-object v11, v13
144	.local v11, "this", Target
145	   10| move-object v12, v11
146	   11| invoke-direct {v12}, java.lang.Object.<init>():void
147	   14| return-void
148}
149
150method Target.main(java.lang.String[]):void
151{
152	.params "?"
153	.src "entryHooks.java"
154	.line 51
155	    0| move-object/16 v15, v31
156	    3| move-object/16 v14, v15
157	    6| move-object/16 v13, v14
158	.prologue_end
159	.line 51
160	    9| move-object v5, v13
161	.local v5, "args", java.lang.String[]
162	   10| sget-object v6, java.lang.System.out
163	   12| const-string v7, "Hello, world!"
164	   14| invoke-virtual {v6,v7}, java.io.PrintStream.println(java.lang.String):void
165	.line 52
166	   17| sget-object v6, java.lang.System.out
167	   19| const-string v7, "final = %d\n"
168	   21| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
169	   22| new-array v8, v8, java.lang.Object[]
170	   24| move-object v12, v8
171	   25| move-object v8, v12
172	   26| move-object v9, v12
173	   27| const/4 v10, #+0 (0x00000000 | 0.00000)
174	   28| invoke-static {}, Target.test():int
175	   31| move-result v11
176	   32| invoke-static {v11}, java.lang.Integer.valueOf(int):java.lang.Integer
177	   35| move-result-object v11
178	   36| aput-object v11, v9, v10
179	   38| invoke-virtual {v6,v7,v8}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
180	   41| move-result-object v6
181	.line 53
182	   42| sget-object v6, java.lang.System.out
183	   44| const-string v7, "Good bye!"
184	   46| invoke-virtual {v6,v7}, java.io.PrintStream.println(java.lang.String):void
185	.line 54
186	   49| return-void
187}
188
189method Target.test():int
190{
191	.src "entryHooks.java"
192	.line 58
193	.prologue_end
194	.line 58
195	    0| new-instance v1, Target
196	    2| move-object v4, v1
197	    3| move-object v1, v4
198	    4| move-object v2, v4
199	    5| invoke-direct {v2}, Target.<init>():void
200	    8| move-object v0, v1
201	.line 59
202	.local v0, "obj", Target
203	    9| move-object v1, v0
204	   10| new-instance v2, Derived
205	   12| move-object v4, v2
206	   13| move-object v2, v4
207	   14| move-object v3, v4
208	   15| invoke-direct {v3}, Derived.<init>():void
209	   18| iput-object v2, v1, Target.test
210	.line 60
211	   20| move-object v1, v0
212	   21| const/4 v2, #+3 (0x00000003 | 4.20390e-45)
213	   22| const-string v3, "Testing..."
214	   24| invoke-virtual {v1,v2,v3}, Target.foo(int, java.lang.String):int
215	   27| move-result v1
216	   28| move v0, v1
217	.end_local v0
218	   29| return v0
219}
220
221method Target.foo(int):int
222{
223	.params "?"
224	.src "entryHooks.java"
225	.line 74
226	    0| move-object/16 v14, v26
227	    3| move/16 v15, v27
228	    6| move-object/16 v13, v14
229	    9| move/16 v14, v15
230	   12| move-object/16 v12, v13
231	   15| move/16 v13, v14
232	.prologue_end
233	.line 74
234	   18| move-object v9, v12
235	.local v9, "this", Target
236	   19| move v10, v13
237	.local v10, "x", int
238	   20| const/4 v11, #+1 (0x00000001 | 1.40130e-45)
239	   21| move v9, v11
240	.end_local v9
241	   22| return v9
242}
243
244method Target.foo(int, int):int
245{
246	.params "?", "?"
247	.src "entryHooks.java"
248	.line 75
249	    0| move-object/16 v13, v27
250	    3| move/16 v14, v28
251	    6| move/16 v15, v29
252	    9| move-object/16 v12, v13
253	   12| move/16 v13, v14
254	   15| move/16 v14, v15
255	   18| move-object/16 v11, v12
256	   21| move/16 v12, v13
257	   24| move/16 v13, v14
258	.prologue_end
259	.line 75
260	   27| move-object v7, v11
261	.local v7, "this", Target
262	   28| move v8, v12
263	.local v8, "x", int
264	   29| move v9, v13
265	.local v9, "y", int
266	   30| const/4 v10, #+2 (0x00000002 | 2.80260e-45)
267	   31| move v7, v10
268	.end_local v7
269	   32| return v7
270}
271
272method Target.foo(int, java.lang.String):int
273{
274	.params "?", "?"
275	.src "entryHooks.java"
276	.line 65
277	    0| move-object/16 v13, v32
278	    3| move/16 v14, v33
279	    6| move-object/16 v15, v34
280	    9| move-object/16 v12, v13
281	   12| move/16 v13, v14
282	   15| move-object/16 v14, v15
283	   18| move-object/16 v11, v12
284	   21| move/16 v12, v13
285	   24| move-object/16 v13, v14
286	.prologue_end
287	.line 65
288	   27| move-object v2, v11
289	.local v2, "this", Target
290	   28| move v3, v12
291	.local v3, "x", int
292	   29| move-object v4, v13
293	.local v4, "msg", java.lang.String
294	   30| const/4 v7, #+0 (0x00000000 | 0.00000)
295	   31| move v5, v7
296	.line 66
297	.local v5, "sum", int
298	   32| const/4 v7, #+0 (0x00000000 | 0.00000)
299	   33| move v6, v7
300Label_1:
301	.local v6, "i", int
302	   34| move v7, v6
303	   35| move v8, v3
304	   36| if-ge v7, v8, Label_2
305	.line 68
306	   38| move v7, v5
307	   39| move-object v8, v2
308	   40| iget-object v8, v8, Target.test
309	   42| move v9, v6
310	   43| move-object v10, v4
311	   44| invoke-virtual {v8,v9,v10}, Base.foo(int, java.lang.String):int
312	   47| move-result v8
313	   48| add-int/2addr v7, v8
314	   49| move v5, v7
315	.line 66
316	   50| add-int/lit8 v6, v6, #+1 (0x00000001 | 1.40130e-45)
317	   52| goto/16 Label_1
318Label_2:
319	.line 70
320	   54| move v7, v5
321	   55| move v2, v7
322	.end_local v2
323	   56| return v2
324}
325
326method Target.foo(int, java.lang.String, java.lang.String):int
327{
328	.params "?", "?", "?"
329	.src "entryHooks.java"
330	.line 76
331	    0| move-object/16 v12, v28
332	    3| move/16 v13, v29
333	    6| move-object/16 v14, v30
334	    9| move-object/16 v15, v31
335	   12| move-object/16 v11, v12
336	   15| move/16 v12, v13
337	   18| move-object/16 v13, v14
338	   21| move-object/16 v14, v15
339	   24| move-object/16 v10, v11
340	   27| move/16 v11, v12
341	   30| move-object/16 v12, v13
342	   33| move-object/16 v13, v14
343	.prologue_end
344	.line 76
345	   36| move-object v5, v10
346	.local v5, "this", Target
347	   37| move v6, v11
348	.local v6, "x", int
349	   38| move-object v7, v12
350	.local v7, "msg", java.lang.String
351	   39| move-object v8, v13
352	.local v8, "msg2", java.lang.String
353	   40| const/4 v9, #+3 (0x00000003 | 4.20390e-45)
354	   41| move v5, v9
355	.end_local v5
356	   42| return v5
357}
358
359method Target.foo(int, java.lang.String[]):int
360{
361	.params "?", "?"
362	.src "entryHooks.java"
363	.line 77
364	    0| move-object/16 v13, v27
365	    3| move/16 v14, v28
366	    6| move-object/16 v15, v29
367	    9| move-object/16 v12, v13
368	   12| move/16 v13, v14
369	   15| move-object/16 v14, v15
370	   18| move-object/16 v11, v12
371	   21| move/16 v12, v13
372	   24| move-object/16 v13, v14
373	.prologue_end
374	.line 77
375	   27| move-object v7, v11
376	.local v7, "this", Target
377	   28| move v8, v12
378	.local v8, "x", int
379	   29| move-object v9, v13
380	.local v9, "msgs", java.lang.String[]
381	   30| const/4 v10, #+4 (0x00000004 | 5.60519e-45)
382	   31| move v7, v10
383	.end_local v7
384	   32| return v7
385}
386
387method Target.foo(int, java.lang.String[][]):java.lang.Integer
388{
389	.params "?", "?"
390	.src "entryHooks.java"
391	.line 78
392	    0| move-object/16 v13, v27
393	    3| move/16 v14, v28
394	    6| move-object/16 v15, v29
395	    9| move-object/16 v12, v13
396	   12| move/16 v13, v14
397	   15| move-object/16 v14, v15
398	   18| move-object/16 v11, v12
399	   21| move/16 v12, v13
400	   24| move-object/16 v13, v14
401	.prologue_end
402	.line 78
403	   27| move-object v7, v11
404	.local v7, "this", Target
405	   28| move v8, v12
406	.local v8, "x", int
407	   29| move-object v9, v13
408	.local v9, "msgs", java.lang.String[][]
409	   30| const/4 v10, #+5 (0x00000005 | 7.00649e-45)
410	   31| invoke-static {v10}, java.lang.Integer.valueOf(int):java.lang.Integer
411	   34| move-result-object v10
412	   35| move-object v7, v10
413	.end_local v7
414	   36| return-object v7
415}
416
417method Target.foo():void
418{
419	.src "entryHooks.java"
420	.line 73
421	    0| move-object/16 v15, v23
422	    3| move-object/16 v14, v15
423	    6| move-object/16 v13, v14
424	.prologue_end
425	.line 73
426	    9| return-void
427}
428
429method Tracer.<init>():void
430{
431	.src "entryHooks.java"
432	.line 2
433	    0| move-object/16 v15, v25
434	    3| move-object/16 v14, v15
435	    6| move-object/16 v13, v14
436	.prologue_end
437	.line 2
438	    9| move-object v11, v13
439	.local v11, "this", Tracer
440	   10| move-object v12, v11
441	   11| invoke-direct {v12}, java.lang.Object.<init>():void
442	   14| return-void
443}
444
445method Tracer.onEntry(java.lang.String):void
446{
447	.params "?"
448	.src "entryHooks.java"
449	.line 6
450	    0| move-object/16 v15, v28
451	    3| move-object/16 v14, v15
452	    6| move-object/16 v13, v14
453	.prologue_end
454	.line 6
455	    9| move-object v8, v13
456	.local v8, "methodName", java.lang.String
457	   10| sget-object v9, java.lang.System.out
458	   12| new-instance v10, java.lang.StringBuilder
459	   14| move-object v12, v10
460	   15| move-object v10, v12
461	   16| move-object v11, v12
462	   17| invoke-direct {v11}, java.lang.StringBuilder.<init>():void
463	   20| const-string v11, "OnEntry("
464	   22| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
465	   25| move-result-object v10
466	   26| move-object v11, v8
467	   27| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
468	   30| move-result-object v10
469	   31| const-string v11, ")"
470	   33| invoke-virtual {v10,v11}, java.lang.StringBuilder.append(java.lang.String):java.lang.StringBuilder
471	   36| move-result-object v10
472	   37| invoke-virtual {v10}, java.lang.StringBuilder.toString():java.lang.String
473	   40| move-result-object v10
474	   41| invoke-virtual {v9,v10}, java.io.PrintStream.println(java.lang.String):void
475	.line 7
476	   44| return-void
477}
478
479method Tracer.onFooEntry(Target, int, java.lang.String):void
480{
481	.params "?", "?", "?"
482	.src "entryHooks.java"
483	.line 11
484	    0| move-object/16 v13, v33
485	    3| move/16 v14, v34
486	    6| move-object/16 v15, v35
487	    9| move-object/16 v12, v13
488	   12| move/16 v13, v14
489	   15| move-object/16 v14, v15
490	   18| move-object/16 v11, v12
491	   21| move/16 v12, v13
492	   24| move-object/16 v13, v14
493	.prologue_end
494	.line 11
495	   27| move-object v1, v11
496	.local v1, "__this", Target
497	   28| move v2, v12
498	.local v2, "x", int
499	   29| move-object v3, v13
500	.local v3, "msg", java.lang.String
501	   30| sget-object v4, java.lang.System.out
502	   32| const-string v5, ">>> onFooEntry(%s, %d, %s)\n"
503	   34| const/4 v6, #+3 (0x00000003 | 4.20390e-45)
504	   35| new-array v6, v6, java.lang.Object[]
505	   37| move-object v10, v6
506	   38| move-object v6, v10
507	   39| move-object v7, v10
508	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
509	   41| move-object v9, v1
510	   42| aput-object v9, v7, v8
511	   44| move-object v10, v6
512	   45| move-object v6, v10
513	   46| move-object v7, v10
514	   47| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
515	   48| move v9, v2
516	   49| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
517	   52| move-result-object v9
518	   53| aput-object v9, v7, v8
519	   55| move-object v10, v6
520	   56| move-object v6, v10
521	   57| move-object v7, v10
522	   58| const/4 v8, #+2 (0x00000002 | 2.80260e-45)
523	   59| move-object v9, v3
524	   60| aput-object v9, v7, v8
525	   62| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
526	   65| move-result-object v4
527	.line 12
528	   66| return-void
529}
530
531method Tracer.onFooExit(int):int
532{
533	.params "?"
534	.src "entryHooks.java"
535	.line 16
536	    0| move/16 v15, v31
537	    3| move/16 v14, v15
538	    6| move/16 v13, v14
539	.prologue_end
540	.line 16
541	    9| move v5, v13
542	.local v5, "retValue", int
543	   10| sget-object v6, java.lang.System.out
544	   12| const-string v7, ">>> onFooExit(%d)\n"
545	   14| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
546	   15| new-array v8, v8, java.lang.Object[]
547	   17| move-object v12, v8
548	   18| move-object v8, v12
549	   19| move-object v9, v12
550	   20| const/4 v10, #+0 (0x00000000 | 0.00000)
551	   21| move v11, v5
552	   22| invoke-static {v11}, java.lang.Integer.valueOf(int):java.lang.Integer
553	   25| move-result-object v11
554	   26| aput-object v11, v9, v10
555	   28| invoke-virtual {v6,v7,v8}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
556	   31| move-result-object v6
557	.line 17
558	   32| move v6, v5
559	   33| const/16 v7, #+100 (0x00000064 | 1.40130e-43)
560	   35| add-int/lit8 v6, v6, #+100 (0x00000064 | 1.40130e-43)
561	   37| move v5, v6
562	.end_local v5
563	   38| return v5
564}
565
566method Tracer.wrapFoo(Base, int, java.lang.String):int
567{
568	.params "?", "?", "?"
569	.src "entryHooks.java"
570	.line 22
571	    0| move-object/16 v13, v33
572	    3| move/16 v14, v34
573	    6| move-object/16 v15, v35
574	    9| move-object/16 v12, v13
575	   12| move/16 v13, v14
576	   15| move-object/16 v14, v15
577	   18| move-object/16 v11, v12
578	   21| move/16 v12, v13
579	   24| move-object/16 v13, v14
580	.prologue_end
581	.line 22
582	   27| move-object v1, v11
583	.local v1, "_this", Base
584	   28| move v2, v12
585	.local v2, "x", int
586	   29| move-object v3, v13
587	.local v3, "msg", java.lang.String
588	   30| sget-object v4, java.lang.System.out
589	   32| const-string v5, ">>> %s.test(%d, %s)\n"
590	   34| const/4 v6, #+3 (0x00000003 | 4.20390e-45)
591	   35| new-array v6, v6, java.lang.Object[]
592	   37| move-object v10, v6
593	   38| move-object v6, v10
594	   39| move-object v7, v10
595	   40| const/4 v8, #+0 (0x00000000 | 0.00000)
596	   41| move-object v9, v1
597	   42| invoke-virtual {v9}, java.lang.Object.getClass():java.lang.Class
598	   45| move-result-object v9
599	   46| invoke-virtual {v9}, java.lang.Class.getName():java.lang.String
600	   49| move-result-object v9
601	   50| aput-object v9, v7, v8
602	   52| move-object v10, v6
603	   53| move-object v6, v10
604	   54| move-object v7, v10
605	   55| const/4 v8, #+1 (0x00000001 | 1.40130e-45)
606	   56| move v9, v2
607	   57| invoke-static {v9}, java.lang.Integer.valueOf(int):java.lang.Integer
608	   60| move-result-object v9
609	   61| aput-object v9, v7, v8
610	   63| move-object v10, v6
611	   64| move-object v6, v10
612	   65| move-object v7, v10
613	   66| const/4 v8, #+2 (0x00000002 | 2.80260e-45)
614	   67| move-object v9, v3
615	   68| aput-object v9, v7, v8
616	   70| invoke-virtual {v4,v5,v6}, java.io.PrintStream.printf(java.lang.String, java.lang.Object[]):java.io.PrintStream
617	   73| move-result-object v4
618	.line 23
619	   74| move-object v4, v1
620	   75| move v5, v2
621	   76| move-object v6, v3
622	   77| invoke-virtual {v4,v5,v6}, Base.foo(int, java.lang.String):int
623	   80| move-result v4
624	   81| const/16 v5, #+10 (0x0000000a | 1.40130e-44)
625	   83| add-int/lit8 v4, v4, #+10 (0x0000000a | 1.40130e-44)
626	   85| move v1, v4
627	.end_local v1
628	   86| return v1
629}
630