1.class public LB134061982_2; 2.super Ljava/lang/Object; 3 4 5.method public constructor <init>()V 6.registers 1 7 invoke-direct {p0}, Ljava/lang/Object;-><init>()V 8 return-void 9.end method 10 11.method public static run(I)V 12.registers 4 13 14# Registers: 15# * v0 = 0/null 16# * v1 = "outer" catch value to operate on 17# * v2 = exception value for inner catch 18# * v3 = p0 = input for two legs. 19 20 const v0, 0 21 22 # Start with r1 == null 23 const v1, 0 24 25 if-eqz p0, :direct_leg 26 goto :indirect_leg 27 28:direct_leg 29 throw v0 30 31:indirect_leg 32 # Make r1 not-reference. 33 const v1, 1 34 throw v0 35 36:end 37 return-void 38 39:catch_inner 40 move-exception v2 41 # r2 should not be primitive, so this should hard-fail if reached. 42 add-int/lit8 v2, v2, 0x1 43 goto :end 44 45:catch_outer 46 # Just some random call. 47 invoke-virtual {v1}, Ljava/io/PrintStream;->println()V 48 goto :end 49 50# Direct leg is directly covered by catch_outer. 51.catchall {:direct_leg .. :indirect_leg} :catch_outer 52 53# Indirect leg is directly covered by catch_inner. 54# * Covered by unresolved and resolved exception classes -> live. 55.catch Ldoes/not/ResolveException; {:indirect_leg .. :end} :catch_inner 56.catch Ljava/lang/ArithmeticException; {:indirect_leg .. :end} :catch_inner 57 58# catch_inner is covered by catch_outer. 59.catchall {:catch_inner .. :catch_outer} :catch_outer 60 61.end method 62