public class org.jf.baksmali.DisassembleCommand extends org.jf.baksmali.DexInputCommand
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.jf.baksmali.DisassembleCommand
super_class: org.jf.baksmali.DexInputCommand
{
private boolean help;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-h", "-?", "--help"}, help = true, description = "Show usage information for this command.")
protected org.jf.baksmali.AnalysisArguments analysisArguments;
descriptor: Lorg/jf/baksmali/AnalysisArguments;
flags: (0x0004) ACC_PROTECTED
RuntimeVisibleAnnotations:
com.beust.jcommander.ParametersDelegate()
private boolean debugInfo;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--debug-info", "--di"}, arity = 1, description = "Whether to include debug information in the output (.local, .param, .line, etc.). True by default, use --debug-info=false to disable.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"boolean"})
private boolean codeOffsets;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--code-offsets", "--offsets", "--off"}, description = "Add a comment before each instruction with it's code offset within the method.")
private java.util.List<java.lang.String> resourceIdFiles;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--resolve-resources", "--rr"}, arity = 2, description = "This will attempt to find any resource id references within the bytecode and add a comment with the name of the resource being referenced. The parameter accepts 2 values:an arbitrary resource prefix and the path to a public.xml file. For example: --resolve-resources android.R framework/res/values/public.xml. This option can be specified multiple times to provide resources from multiple packages.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"resource prefix", "public.xml file"})
private int jobs;
descriptor: I
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-j", "--jobs"}, description = "The number of threads to use. Defaults to the number of cores available.", validateWith = Lcom/beust/jcommander/validators/PositiveInteger;)
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"n"})
private boolean localsDirective;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-l", "--use-locals"}, description = "When disassembling, output the .locals directive with the number of non-parameter registers instead of the .registers directive with the total number of registers.")
private boolean accessorComments;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--accessor-comments", "--ac"}, arity = 1, description = "Generate helper comments for synthetic accessors. True by default, use --accessor-comments=false to disable.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"boolean"})
private boolean normalizeVirtualMethods;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--normalize-virtual-methods", "--norm", "--nvm"}, description = "Normalize virtual method references to use the base class where the method is originally declared.")
private java.lang.String outputDir;
descriptor: Ljava/lang/String;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-o", "--output"}, description = "The directory to write the disassembled files to.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"dir"})
private boolean parameterRegisters;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--parameter-registers", "--preg", "--pr"}, arity = 1, description = "Use the pNN syntax for registers that refer to a method parameter on method entry. True by default, use --parameter-registers=false to disable.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"boolean"})
private java.util.List<java.lang.String> registerInfoTypes;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"-r", "--register-info"}, description = "Add comments before/after each instruction with information about register types. The value is a comma-separated list of any of ALL, ALLPRE, ALLPOST, ARGS, DEST, MERGE and FULLMERGE. See \"baksmali help register-info\" for more information.")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"register info specifier"})
private boolean sequentialLabels;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--sequential-labels", "--seq", "--sl"}, description = "Create label names using a sequential numbering scheme per label type, rather than using the bytecode address.")
private boolean implicitReferences;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--implicit-references", "--implicit", "--ir"}, description = "Use implicit method and field references (without the class name) for methods and fields from the current class.")
private boolean allowOdex;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--allow-odex-opcodes"}, description = "Allows odex opcodes to be disassembled, even if the result won't be able to be reassembled.")
private java.util.List<java.lang.String> classes;
descriptor: Ljava/util/List;
flags: (0x0002) ACC_PRIVATE
Signature: Ljava/util/List<Ljava/lang/String;>;
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameter(names = {"--classes"}, description = "A comma separated list of classes. Only disassemble these classes")
org.jf.util.jcommander.ExtendedParameter(argumentNames = {"classes"})
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/jf/baksmali/DisassembleCommand;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic org.jf.baksmali.DisassembleCommand.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(java.util.List<com.beust.jcommander.JCommander>);
descriptor: (Ljava/util/List;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial org.jf.baksmali.DexInputCommand.<init>:(Ljava/util/List;)V
1: aload 0
new org.jf.baksmali.AnalysisArguments
dup
invokespecial org.jf.baksmali.AnalysisArguments.<init>:()V
putfield org.jf.baksmali.DisassembleCommand.analysisArguments:Lorg/jf/baksmali/AnalysisArguments;
2: aload 0
iconst_1
putfield org.jf.baksmali.DisassembleCommand.debugInfo:Z
3: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.codeOffsets:Z
4: aload 0
invokestatic com.google.common.collect.Lists.newArrayList:()Ljava/util/ArrayList;
putfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
5: aload 0
invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
invokevirtual java.lang.Runtime.availableProcessors:()I
putfield org.jf.baksmali.DisassembleCommand.jobs:I
6: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.localsDirective:Z
7: aload 0
iconst_1
putfield org.jf.baksmali.DisassembleCommand.accessorComments:Z
8: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.normalizeVirtualMethods:Z
9: aload 0
ldc "out"
putfield org.jf.baksmali.DisassembleCommand.outputDir:Ljava/lang/String;
10: aload 0
iconst_1
putfield org.jf.baksmali.DisassembleCommand.parameterRegisters:Z
11: aload 0
invokestatic com.google.common.collect.Lists.newArrayList:()Ljava/util/ArrayList;
putfield org.jf.baksmali.DisassembleCommand.registerInfoTypes:Ljava/util/List;
12: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.sequentialLabels:Z
13: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.implicitReferences:Z
14: aload 0
iconst_0
putfield org.jf.baksmali.DisassembleCommand.allowOdex:Z
15: aload 0
aconst_null
putfield org.jf.baksmali.DisassembleCommand.classes:Ljava/util/List;
16: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/jf/baksmali/DisassembleCommand;
0 17 1 commandAncestors Ljava/util/List<Lcom/beust/jcommander/JCommander;>;
Signature: (Ljava/util/List<Lcom/beust/jcommander/JCommander;>;)V
RuntimeVisibleTypeAnnotations:
METHOD_FORMAL_PARAMETER
javax.annotation.Nonnull()
RuntimeVisibleParameterAnnotations:
0:
javax.annotation.Nonnull()
MethodParameters:
Name Flags
commandAncestors
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getfield org.jf.baksmali.DisassembleCommand.help:Z
ifne 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.inputList:Ljava/util/List;
ifnull 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.inputList:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 3
1: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.usage:()V
2: return
3: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.inputList:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_1
if_icmple 7
4: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Too many files specified"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
5: aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.usage:()V
6: return
7: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.inputList:Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 1
start local 1 8: aload 0
aload 1
invokevirtual org.jf.baksmali.DisassembleCommand.loadDexFile:(Ljava/lang/String;)V
9: aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.showDeodexWarning:()Z
ifeq 14
aload 0
getfield org.jf.baksmali.DisassembleCommand.dexFile:Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;
invokevirtual org.jf.dexlib2.dexbacked.DexBackedDexFile.supportsOptimizedOpcodes:()Z
ifeq 14
10: getstatic java.lang.System.err:Ljava/io/PrintStream;
11: ldc "Warning: You are disassembling an odex/oat file without deodexing it. You won't be able to re-assemble the results unless you deodex it. See \"baksmali help deodex\""
12: invokestatic org.jf.util.ConsoleUtil.getConsoleWidth:()I
13: invokestatic org.jf.util.StringWrapper.printWrappedString:(Ljava/io/PrintStream;Ljava/lang/String;I)V
14: StackMap locals: java.lang.String
StackMap stack:
new java.io.File
dup
aload 0
getfield org.jf.baksmali.DisassembleCommand.outputDir:Ljava/lang/String;
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 2
start local 2 15: aload 2
invokevirtual java.io.File.exists:()Z
ifne 19
16: aload 2
invokevirtual java.io.File.mkdirs:()Z
ifne 19
17: getstatic java.lang.System.err:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
ldc "Can't create the output directory "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield org.jf.baksmali.DisassembleCommand.outputDir:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
18: iconst_m1
invokestatic java.lang.System.exit:(I)V
19: StackMap locals: java.io.File
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.analysisArguments:Lorg/jf/baksmali/AnalysisArguments;
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
ifnull 20
aload 0
getfield org.jf.baksmali.DisassembleCommand.analysisArguments:Lorg/jf/baksmali/AnalysisArguments;
getfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 21
20: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.analysisArguments:Lorg/jf/baksmali/AnalysisArguments;
iconst_1
anewarray java.lang.String
dup
iconst_0
aload 0
getfield org.jf.baksmali.DisassembleCommand.inputFile:Ljava/io/File;
invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
invokevirtual java.io.File.getParent:()Ljava/lang/String;
aastore
invokestatic com.google.common.collect.Lists.newArrayList:([Ljava/lang/Object;)Ljava/util/ArrayList;
putfield org.jf.baksmali.AnalysisArguments.classPathDirectories:Ljava/util/List;
21: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.dexFile:Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;
aload 2
aload 0
getfield org.jf.baksmali.DisassembleCommand.jobs:I
aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.getOptions:()Lorg/jf/baksmali/BaksmaliOptions;
aload 0
getfield org.jf.baksmali.DisassembleCommand.classes:Ljava/util/List;
invokestatic org.jf.baksmali.Baksmali.disassembleDexFile:(Lorg/jf/dexlib2/iface/DexFile;Ljava/io/File;ILorg/jf/baksmali/BaksmaliOptions;Ljava/util/List;)Z
ifne 23
22: iconst_m1
invokestatic java.lang.System.exit:(I)V
23: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 24 0 this Lorg/jf/baksmali/DisassembleCommand;
8 24 1 input Ljava/lang/String;
15 24 2 outputDirectoryFile Ljava/io/File;
protected boolean needsClassPath();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.jf.baksmali.DisassembleCommand.registerInfoTypes:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.normalizeVirtualMethods:Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/jf/baksmali/DisassembleCommand;
protected boolean shouldCheckPackagePrivateAccess();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jf/baksmali/DisassembleCommand;
protected boolean showDeodexWarning();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/jf/baksmali/DisassembleCommand;
protected org.jf.baksmali.BaksmaliOptions getOptions();
descriptor: ()Lorg/jf/baksmali/BaksmaliOptions;
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=7, args_size=1
start local 0 0: aload 0
getfield org.jf.baksmali.DisassembleCommand.dexFile:Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;
ifnonnull 2
1: new java.lang.IllegalStateException
dup
ldc "You must call loadDexFile first"
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
new org.jf.baksmali.BaksmaliOptions
dup
invokespecial org.jf.baksmali.BaksmaliOptions.<init>:()V
astore 1
start local 1 3: aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.needsClassPath:()Z
ifeq 12
4: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.analysisArguments:Lorg/jf/baksmali/AnalysisArguments;
5: aload 0
getfield org.jf.baksmali.DisassembleCommand.inputFile:Ljava/io/File;
invokevirtual java.io.File.getAbsoluteFile:()Ljava/io/File;
invokevirtual java.io.File.getParentFile:()Ljava/io/File;
aload 0
getfield org.jf.baksmali.DisassembleCommand.dexEntry:Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;
aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.shouldCheckPackagePrivateAccess:()Z
6: invokevirtual org.jf.baksmali.AnalysisArguments.loadClassPathForDexFile:(Ljava/io/File;Lorg/jf/dexlib2/iface/MultiDexContainer$DexEntry;Z)Lorg/jf/dexlib2/analysis/ClassPath;
putfield org.jf.baksmali.BaksmaliOptions.classPath:Lorg/jf/dexlib2/analysis/ClassPath;
7: goto 12
StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions
StackMap stack: java.lang.Exception
8: astore 2
start local 2 9: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "\n\nError occurred while loading class path files. Aborting."
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
10: aload 2
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
11: iconst_m1
invokestatic java.lang.System.exit:(I)V
end local 2 12: StackMap locals:
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 37
13: invokestatic com.google.common.collect.Maps.newHashMap:()Ljava/util/HashMap;
astore 2
start local 2 14: getstatic org.jf.baksmali.DisassembleCommand.$assertionsDisabled:Z
ifne 15
aload 0
getfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
invokeinterface java.util.List.size:()I
iconst_2
irem
ifeq 15
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
15: StackMap locals: java.util.Map
StackMap stack:
iconst_0
istore 3
start local 3 16: goto 25
17: StackMap locals: int
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
iload 3
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 18: aload 0
getfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
iload 3
iconst_1
iadd
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 5
start local 5 19: new java.io.File
dup
aload 5
invokespecial java.io.File.<init>:(Ljava/lang/String;)V
astore 6
start local 6 20: aload 6
invokevirtual java.io.File.exists:()Z
ifne 23
21: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Can't find file: %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
22: iconst_m1
invokestatic java.lang.System.exit:(I)V
23: StackMap locals: java.lang.String java.lang.String java.io.File
StackMap stack:
aload 2
aload 4
aload 6
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 6 end local 5 end local 4 24: iinc 3 2
StackMap locals:
StackMap stack:
25: iload 3
aload 0
getfield org.jf.baksmali.DisassembleCommand.resourceIdFiles:Ljava/util/List;
invokeinterface java.util.List.size:()I
if_icmplt 17
end local 3 26: aload 1
aload 2
invokevirtual org.jf.baksmali.BaksmaliOptions.loadResourceIds:(Ljava/util/Map;)V
27: goto 37
StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions java.util.Map
StackMap stack: java.io.IOException
28: astore 3
start local 3 29: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Error while loading resource files:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
30: aload 3
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual java.io.IOException.printStackTrace:(Ljava/io/PrintStream;)V
31: iconst_m1
invokestatic java.lang.System.exit:(I)V
end local 3 32: goto 37
33: StackMap locals:
StackMap stack: org.xml.sax.SAXException
astore 3
start local 3 34: getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Error while loading resource files:"
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
35: aload 3
getstatic java.lang.System.err:Ljava/io/PrintStream;
invokevirtual org.xml.sax.SAXException.printStackTrace:(Ljava/io/PrintStream;)V
36: iconst_m1
invokestatic java.lang.System.exit:(I)V
end local 3 end local 2 37: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.parameterRegisters:Z
putfield org.jf.baksmali.BaksmaliOptions.parameterRegisters:Z
38: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.localsDirective:Z
putfield org.jf.baksmali.BaksmaliOptions.localsDirective:Z
39: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.sequentialLabels:Z
putfield org.jf.baksmali.BaksmaliOptions.sequentialLabels:Z
40: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.debugInfo:Z
putfield org.jf.baksmali.BaksmaliOptions.debugInfo:Z
41: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.codeOffsets:Z
putfield org.jf.baksmali.BaksmaliOptions.codeOffsets:Z
42: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.accessorComments:Z
putfield org.jf.baksmali.BaksmaliOptions.accessorComments:Z
43: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.implicitReferences:Z
putfield org.jf.baksmali.BaksmaliOptions.implicitReferences:Z
44: aload 1
aload 0
getfield org.jf.baksmali.DisassembleCommand.normalizeVirtualMethods:Z
putfield org.jf.baksmali.BaksmaliOptions.normalizeVirtualMethods:Z
45: aload 1
iconst_0
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
46: aload 0
getfield org.jf.baksmali.DisassembleCommand.registerInfoTypes:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 74
StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions top java.util.Iterator
StackMap stack:
47: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 48: aload 2
ldc "ALL"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 51
49: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
iconst_1
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
50: goto 72
StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions java.lang.String java.util.Iterator
StackMap stack:
51: aload 2
ldc "ALLPRE"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 54
52: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
iconst_2
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
53: goto 72
StackMap locals:
StackMap stack:
54: aload 2
ldc "ALLPOST"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 57
55: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
iconst_4
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
56: goto 72
StackMap locals:
StackMap stack:
57: aload 2
ldc "ARGS"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 60
58: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush 8
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
59: goto 72
StackMap locals:
StackMap stack:
60: aload 2
ldc "DEST"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 63
61: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush 16
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
62: goto 72
StackMap locals:
StackMap stack:
63: aload 2
ldc "MERGE"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 66
64: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush 32
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
65: goto 72
StackMap locals:
StackMap stack:
66: aload 2
ldc "FULLMERGE"
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 69
67: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush 64
ior
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
68: goto 72
69: StackMap locals:
StackMap stack:
getstatic java.lang.System.err:Ljava/io/PrintStream;
ldc "Invalid register info type: %s"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
70: aload 0
invokevirtual org.jf.baksmali.DisassembleCommand.usage:()V
71: iconst_m1
invokestatic java.lang.System.exit:(I)V
72: StackMap locals:
StackMap stack:
aload 1
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush 64
iand
ifeq 74
73: aload 1
dup
getfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
bipush -33
iand
putfield org.jf.baksmali.BaksmaliOptions.registerInfo:I
end local 2 74: StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 47
75: aload 0
getfield org.jf.baksmali.DisassembleCommand.accessorComments:Z
ifeq 79
76: aload 1
new org.jf.dexlib2.util.SyntheticAccessorResolver
dup
aload 0
getfield org.jf.baksmali.DisassembleCommand.dexFile:Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;
invokevirtual org.jf.dexlib2.dexbacked.DexBackedDexFile.getOpcodes:()Lorg/jf/dexlib2/Opcodes;
77: aload 0
getfield org.jf.baksmali.DisassembleCommand.dexFile:Lorg/jf/dexlib2/dexbacked/DexBackedDexFile;
invokevirtual org.jf.dexlib2.dexbacked.DexBackedDexFile.getClasses:()Ljava/util/Set;
invokespecial org.jf.dexlib2.util.SyntheticAccessorResolver.<init>:(Lorg/jf/dexlib2/Opcodes;Ljava/lang/Iterable;)V
78: putfield org.jf.baksmali.BaksmaliOptions.syntheticAccessorResolver:Lorg/jf/dexlib2/util/SyntheticAccessorResolver;
79: StackMap locals: org.jf.baksmali.DisassembleCommand org.jf.baksmali.BaksmaliOptions
StackMap stack:
aload 0
getfield org.jf.baksmali.DisassembleCommand.allowOdex:Z
ifeq 81
80: aload 1
iconst_1
putfield org.jf.baksmali.BaksmaliOptions.allowOdex:Z
81: StackMap locals:
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 82 0 this Lorg/jf/baksmali/DisassembleCommand;
3 82 1 options Lorg/jf/baksmali/BaksmaliOptions;
9 12 2 ex Ljava/lang/Exception;
14 37 2 resourceFiles Ljava/util/Map<Ljava/lang/String;Ljava/io/File;>;
16 26 3 i I
18 24 4 resourcePrefix Ljava/lang/String;
19 24 5 publicXml Ljava/lang/String;
20 24 6 publicXmlFile Ljava/io/File;
29 32 3 ex Ljava/io/IOException;
34 37 3 ex Lorg/xml/sax/SAXException;
48 74 2 registerInfoType Ljava/lang/String;
Exception table:
from to target type
4 7 8 Class java.lang.Exception
26 27 28 Class java.io.IOException
26 27 33 Class org.xml.sax.SAXException
}
SourceFile: "DisassembleCommand.java"
InnerClasses:
public abstract DexEntry = org.jf.dexlib2.iface.MultiDexContainer$DexEntry of org.jf.dexlib2.iface.MultiDexContainer
RuntimeVisibleAnnotations:
com.beust.jcommander.Parameters(commandDescription = "Disassembles a dex file.")
org.jf.util.jcommander.ExtendedParameters(commandName = "disassemble", commandAliases = {"dis", "d"})