61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Smali
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Smali
		
	
	
	
| .class public LB134061982;
 | |
| .super Ljava/lang/Object;
 | |
| 
 | |
| 
 | |
| .method public constructor <init>()V
 | |
| .registers 1
 | |
|        invoke-direct {p0}, Ljava/lang/Object;-><init>()V
 | |
|        return-void
 | |
| .end method
 | |
| 
 | |
| .method public static run(I)V
 | |
| .registers 4
 | |
| 
 | |
| # Registers:
 | |
| # * v0 = 0/null
 | |
| # * v1 = "outer" catch value to operate on
 | |
| # * v2 = exception value for inner catch
 | |
| # * v3 = p0 = input for two legs.
 | |
| 
 | |
|         const v0, 0
 | |
| 
 | |
|         # Start with r1 == null
 | |
|         const v1, 0
 | |
| 
 | |
|         if-eqz p0, :direct_leg
 | |
|         goto :indirect_leg
 | |
| 
 | |
| :direct_leg
 | |
|         throw v0
 | |
| 
 | |
| :indirect_leg
 | |
|         # Make r1 not-reference.
 | |
|         const v1, 1
 | |
|         throw v0
 | |
| 
 | |
| :end
 | |
|         return-void
 | |
| 
 | |
| :catch_inner
 | |
|         move-exception v2
 | |
|         # r2 should not be primitive, so this should hard-fail if reached.
 | |
|         add-int/lit8 v2, v2, 0x1
 | |
|         goto :end
 | |
| 
 | |
| :catch_outer
 | |
|         # Just some random call.
 | |
|         invoke-virtual {v1}, Ljava/io/PrintStream;->println()V
 | |
|         goto :end
 | |
| 
 | |
| # Direct leg is directly covered by catch_outer.
 | |
| .catchall {:direct_leg .. :indirect_leg} :catch_outer
 | |
| 
 | |
| # Indirect leg is directly covered by catch_inner.
 | |
| # * Covered by unresolved exception class -> unreachable.
 | |
| .catch Ldoes/not/ResolveException; {:indirect_leg .. :end} :catch_inner
 | |
| 
 | |
| # catch_inner is covered by catch_outer.
 | |
| .catchall {:catch_inner .. :catch_outer} :catch_outer
 | |
| 
 | |
| .end method
 |