dex-reader-1.15

16:35:20.893 INFO  jd.cli.Main - Decompiling dex-reader-1.15.jar
package com.googlecode.dex2jar;

public class DexLabel
{
  public Object info;
  private int offset = -1;
  
  public DexLabel(int offset)
  {
    this.offset = offset;
  }
  
  public DexLabel() {}
  
  public String toString()
  {
    if (offset >= 0) {
      return String.format("L%04x", new Object[] { Integer.valueOf(offset) });
    }
    return String.format("L%08x", new Object[] { Integer.valueOf(hashCode()) });
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.DexLabel
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;

public class DexClassAdapter
  implements DexClassVisitor
{
  protected DexClassVisitor dcv;
  
  public DexClassAdapter(DexClassVisitor dcv)
  {
    this.dcv = dcv;
  }
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return dcv.visitAnnotation(name, visible);
  }
  
  public void visitEnd()
  {
    dcv.visitEnd();
  }
  
  public DexFieldVisitor visitField(int accessFlags, Field field, Object value)
  {
    return dcv.visitField(accessFlags, field, value);
  }
  
  public DexMethodVisitor visitMethod(int accessFlags, Method method)
  {
    return dcv.visitMethod(accessFlags, method);
  }
  
  public void visitSource(String file)
  {
    dcv.visitSource(file);
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexClassAdapter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

import com.googlecode.dex2jar.DexLabel;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;
import com.googlecode.dex2jar.OdexOpcodes;

public class EmptyVisitor
  implements OdexFileVisitor, DexClassVisitor, DexMethodVisitor, DexFieldVisitor, OdexCodeVisitor, DexAnnotationVisitor, OdexOpcodes
{
  public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames)
  {
    return null;
  }
  
  public void visitEnd() {}
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return null;
  }
  
  public void visitArrayStmt(int opcode, int formOrToReg, int arrayReg, int indexReg, int xt) {}
  
  public void visitBinopLitXStmt(int opcode, int distReg, int srcReg, int content) {}
  
  public void visitBinopStmt(int opcode, int toReg, int r1, int r2, int xt) {}
  
  public void visitClassStmt(int opcode, int a, int b, String type) {}
  
  public void visitClassStmt(int opcode, int saveTo, String type) {}
  
  public void visitCmpStmt(int opcode, int distReg, int bB, int cC, int xt) {}
  
  public void visitConstStmt(int opcode, int toReg, Object value, int xt) {}
  
  public void visitFieldStmt(int opcode, int fromOrToReg, Field field, int xt) {}
  
  public void visitFieldStmt(int opcode, int fromOrToReg, int objReg, Field field, int xt) {}
  
  public void visitFillArrayStmt(int opcode, int aA, int elemWidth, int initLength, Object[] values) {}
  
  public void visitFilledNewArrayStmt(int opcode, int[] args, String type) {}
  
  public void visitJumpStmt(int opcode, int a, int b, DexLabel label) {}
  
  public void visitJumpStmt(int opcode, int reg, DexLabel label) {}
  
  public void visitJumpStmt(int opcode, DexLabel label) {}
  
  public void visitLookupSwitchStmt(int opcode, int aA, DexLabel label, int[] cases, DexLabel[] labels) {}
  
  public void visitMethodStmt(int opcode, int[] args, Method method) {}
  
  public void visitMonitorStmt(int opcode, int reg) {}
  
  public void visitMoveStmt(int opcode, int toReg, int xt) {}
  
  public void visitMoveStmt(int opcode, int toReg, int fromReg, int xt) {}
  
  public void visitReturnStmt(int opcode) {}
  
  public void visitReturnStmt(int opcode, int reg, int xt) {}
  
  public void visitTableSwitchStmt(int opcode, int aA, DexLabel label, int first_case, int last_case, DexLabel[] labels) {}
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xt) {}
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xta, int xtb) {}
  
  public void visitTryCatch(DexLabel start, DexLabel end, DexLabel[] handlers, String[] types) {}
  
  public void visitArguments(int total, int[] args) {}
  
  public void visitLabel(DexLabel label) {}
  
  public void visitLineNumber(int line, DexLabel label) {}
  
  public void visitLocalVariable(String name, String type, String signature, DexLabel start, DexLabel end, int reg) {}
  
  public void visit(String name, Object value) {}
  
  public void visitEnum(String name, String desc, String value) {}
  
  public DexAnnotationVisitor visitAnnotation(String name, String desc)
  {
    return null;
  }
  
  public DexAnnotationVisitor visitArray(String name)
  {
    return null;
  }
  
  public void visitReturnStmt(int opcode, int cause, Object ref) {}
  
  public void visitMethodStmt(int opcode, int[] args, int a) {}
  
  public void visitFieldStmt(int opcode, int fromOrToReg, int objReg, int fieldoff, int xt) {}
  
  public DexCodeVisitor visitCode()
  {
    return null;
  }
  
  public DexAnnotationAble visitParameterAnnotation(int index)
  {
    return null;
  }
  
  public void visitSource(String file) {}
  
  public DexFieldVisitor visitField(int accessFlags, Field field, Object value)
  {
    return null;
  }
  
  public DexMethodVisitor visitMethod(int accessFlags, Method method)
  {
    return null;
  }
  
  public void visitDepedence(String name, byte[] checksum) {}
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.EmptyVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface DexAnnotationAble
{
  public abstract DexAnnotationVisitor visitAnnotation(String paramString, boolean paramBoolean);
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexAnnotationAble
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public class DexMethodAdapter
  implements DexMethodVisitor
{
  protected DexMethodVisitor mv;
  
  public DexMethodAdapter(DexMethodVisitor mv)
  {
    this.mv = mv;
  }
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return mv.visitAnnotation(name, visible);
  }
  
  public DexCodeVisitor visitCode()
  {
    return mv.visitCode();
  }
  
  public void visitEnd()
  {
    mv.visitEnd();
  }
  
  public DexAnnotationAble visitParameterAnnotation(int index)
  {
    return mv.visitParameterAnnotation(index);
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexMethodAdapter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface OdexCodeVisitor
  extends DexCodeVisitor
{
  public static final int VerificatioError_None = 0;
  public static final int VerificatioError_Generic = 1;
  public static final int VerificatioError_NoClass = 2;
  public static final int VerificatioError_NoField = 3;
  public static final int VerificatioError_NoMethod = 4;
  public static final int VerificatioError_AccessClass = 5;
  public static final int VerificatioError_AccessField = 6;
  public static final int VerificatioError_AccessMethod = 7;
  public static final int VerificatioError_ClassChange = 8;
  public static final int VerificatioError_Instantiation = 9;
  
  public abstract void visitReturnStmt(int paramInt1, int paramInt2, Object paramObject);
  
  public abstract void visitMethodStmt(int paramInt1, int[] paramArrayOfInt, int paramInt2);
  
  public abstract void visitFieldStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5);
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.OdexCodeVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface DexAnnotationVisitor
{
  public abstract void visit(String paramString, Object paramObject);
  
  public abstract void visitEnum(String paramString1, String paramString2, String paramString3);
  
  public abstract DexAnnotationVisitor visitAnnotation(String paramString1, String paramString2);
  
  public abstract DexAnnotationVisitor visitArray(String paramString);
  
  public abstract void visitEnd();
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexAnnotationVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;

public abstract interface DexClassVisitor
  extends DexAnnotationAble
{
  public abstract void visitSource(String paramString);
  
  public abstract DexFieldVisitor visitField(int paramInt, Field paramField, Object paramObject);
  
  public abstract DexMethodVisitor visitMethod(int paramInt, Method paramMethod);
  
  public abstract void visitEnd();
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexClassVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface DexFileVisitor
{
  public abstract DexClassVisitor visit(int paramInt, String paramString1, String paramString2, String[] paramArrayOfString);
  
  public abstract void visitEnd();
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexFileVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface DexFieldVisitor
  extends DexAnnotationAble
{
  public abstract void visitEnd();
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexFieldVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface OdexFileVisitor
  extends DexFileVisitor
{
  public abstract void visitDepedence(String paramString, byte[] paramArrayOfByte);
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.OdexFileVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

import com.googlecode.dex2jar.DexLabel;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;

public abstract interface DexCodeVisitor
{
  public abstract void visitArrayStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5);
  
  public abstract void visitBinopLitXStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4);
  
  public abstract void visitBinopStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5);
  
  public abstract void visitClassStmt(int paramInt1, int paramInt2, int paramInt3, String paramString);
  
  public abstract void visitClassStmt(int paramInt1, int paramInt2, String paramString);
  
  public abstract void visitCmpStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5);
  
  public abstract void visitConstStmt(int paramInt1, int paramInt2, Object paramObject, int paramInt3);
  
  public abstract void visitFieldStmt(int paramInt1, int paramInt2, Field paramField, int paramInt3);
  
  public abstract void visitFieldStmt(int paramInt1, int paramInt2, int paramInt3, Field paramField, int paramInt4);
  
  public abstract void visitFillArrayStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, Object[] paramArrayOfObject);
  
  public abstract void visitFilledNewArrayStmt(int paramInt, int[] paramArrayOfInt, String paramString);
  
  public abstract void visitJumpStmt(int paramInt1, int paramInt2, int paramInt3, DexLabel paramDexLabel);
  
  public abstract void visitJumpStmt(int paramInt1, int paramInt2, DexLabel paramDexLabel);
  
  public abstract void visitJumpStmt(int paramInt, DexLabel paramDexLabel);
  
  public abstract void visitLookupSwitchStmt(int paramInt1, int paramInt2, DexLabel paramDexLabel, int[] paramArrayOfInt, DexLabel[] paramArrayOfDexLabel);
  
  public abstract void visitMethodStmt(int paramInt, int[] paramArrayOfInt, Method paramMethod);
  
  public abstract void visitMonitorStmt(int paramInt1, int paramInt2);
  
  public abstract void visitMoveStmt(int paramInt1, int paramInt2, int paramInt3);
  
  public abstract void visitMoveStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4);
  
  public abstract void visitReturnStmt(int paramInt);
  
  public abstract void visitReturnStmt(int paramInt1, int paramInt2, int paramInt3);
  
  public abstract void visitTableSwitchStmt(int paramInt1, int paramInt2, DexLabel paramDexLabel, int paramInt3, int paramInt4, DexLabel[] paramArrayOfDexLabel);
  
  public abstract void visitUnopStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4);
  
  public abstract void visitUnopStmt(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5);
  
  public abstract void visitTryCatch(DexLabel paramDexLabel1, DexLabel paramDexLabel2, DexLabel[] paramArrayOfDexLabel, String[] paramArrayOfString);
  
  public abstract void visitArguments(int paramInt, int[] paramArrayOfInt);
  
  public abstract void visitEnd();
  
  public abstract void visitLabel(DexLabel paramDexLabel);
  
  public abstract void visitLineNumber(int paramInt, DexLabel paramDexLabel);
  
  public abstract void visitLocalVariable(String paramString1, String paramString2, String paramString3, DexLabel paramDexLabel1, DexLabel paramDexLabel2, int paramInt);
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexCodeVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public abstract interface DexMethodVisitor
  extends DexAnnotationAble
{
  public abstract DexCodeVisitor visitCode();
  
  public abstract void visitEnd();
  
  public abstract DexAnnotationAble visitParameterAnnotation(int paramInt);
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexMethodVisitor
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

import com.googlecode.dex2jar.DexLabel;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;

public class DexCodeAdapter
  implements DexCodeVisitor
{
  protected DexCodeVisitor dcv;
  
  public DexCodeAdapter(DexCodeVisitor dcv)
  {
    this.dcv = dcv;
  }
  
  public void visitArrayStmt(int opAget, int formOrToReg, int arrayReg, int indexReg, int xt)
  {
    dcv.visitArrayStmt(opAget, formOrToReg, arrayReg, indexReg, xt);
  }
  
  public void visitBinopLitXStmt(int opcode, int aA, int bB, int cC)
  {
    dcv.visitBinopLitXStmt(opcode, aA, bB, cC);
  }
  
  public void visitBinopStmt(int opcode, int toReg, int r1, int r2, int xt)
  {
    dcv.visitBinopStmt(opcode, toReg, r1, r2, xt);
  }
  
  public void visitClassStmt(int opcode, int a, int b, String type)
  {
    dcv.visitClassStmt(opcode, a, b, type);
  }
  
  public void visitClassStmt(int opCheckCast, int saveTo, String type)
  {
    dcv.visitClassStmt(opCheckCast, saveTo, type);
  }
  
  public void visitCmpStmt(int opcode, int distReg, int bB, int cC, int xt)
  {
    dcv.visitCmpStmt(opcode, distReg, bB, cC, xt);
  }
  
  public void visitConstStmt(int opConst, int toReg, Object value, int xt)
  {
    dcv.visitConstStmt(opConst, toReg, value, xt);
  }
  
  public void visitFieldStmt(int opcode, int fromOrToReg, Field field, int xt)
  {
    dcv.visitFieldStmt(opcode, fromOrToReg, field, xt);
  }
  
  public void visitFieldStmt(int opcode, int fromOrToReg, int objReg, Field field, int xt)
  {
    dcv.visitFieldStmt(opcode, fromOrToReg, objReg, field, xt);
  }
  
  public void visitFillArrayStmt(int opcode, int aA, int elemWidth, int initLength, Object[] values)
  {
    dcv.visitFillArrayStmt(opcode, aA, elemWidth, initLength, values);
  }
  
  public void visitFilledNewArrayStmt(int opcode, int[] args, String type)
  {
    dcv.visitFilledNewArrayStmt(opcode, args, type);
  }
  
  public void visitJumpStmt(int opcode, int a, int b, DexLabel label)
  {
    dcv.visitJumpStmt(opcode, a, b, label);
  }
  
  public void visitJumpStmt(int opConst, int reg, DexLabel label)
  {
    dcv.visitJumpStmt(opConst, reg, label);
  }
  
  public void visitJumpStmt(int opGoto, DexLabel label)
  {
    dcv.visitJumpStmt(opGoto, label);
  }
  
  public void visitLookupSwitchStmt(int opcode, int aA, DexLabel label, int[] cases, DexLabel[] labels)
  {
    dcv.visitLookupSwitchStmt(opcode, aA, label, cases, labels);
  }
  
  public void visitMethodStmt(int opcode, int[] args, Method method)
  {
    dcv.visitMethodStmt(opcode, args, method);
  }
  
  public void visitMonitorStmt(int opcode, int reg)
  {
    dcv.visitMonitorStmt(opcode, reg);
  }
  
  public void visitMoveStmt(int opConst, int toReg, int xt)
  {
    dcv.visitMoveStmt(opConst, toReg, xt);
  }
  
  public void visitMoveStmt(int opcode, int toReg, int fromReg, int xt)
  {
    dcv.visitMoveStmt(opcode, toReg, fromReg, xt);
  }
  
  public void visitReturnStmt(int opcode)
  {
    dcv.visitReturnStmt(opcode);
  }
  
  public void visitReturnStmt(int opConst, int reg, int xt)
  {
    dcv.visitReturnStmt(opConst, reg, xt);
  }
  
  public void visitTableSwitchStmt(int opcode, int aA, DexLabel label, int first_case, int last_case, DexLabel[] labels)
  {
    dcv.visitTableSwitchStmt(opcode, aA, label, first_case, last_case, labels);
  }
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xt)
  {
    dcv.visitUnopStmt(opcode, toReg, fromReg, xt);
  }
  
  public void visitTryCatch(DexLabel start, DexLabel end, DexLabel[] handlers, String[] types)
  {
    dcv.visitTryCatch(start, end, handlers, types);
  }
  
  public void visitArguments(int total, int[] args)
  {
    dcv.visitArguments(total, args);
  }
  
  public void visitEnd()
  {
    dcv.visitEnd();
  }
  
  public void visitLabel(DexLabel label)
  {
    dcv.visitLabel(label);
  }
  
  public void visitLineNumber(int line, DexLabel label)
  {
    dcv.visitLineNumber(line, label);
  }
  
  public void visitLocalVariable(String name, String type, String signature, DexLabel start, DexLabel end, int reg)
  {
    dcv.visitLocalVariable(name, type, signature, start, end, reg);
  }
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xta, int xtb)
  {
    dcv.visitUnopStmt(opcode, toReg, fromReg, xta, xtb);
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexCodeAdapter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.visitors;

public class DexFileAdapter
  implements DexFileVisitor
{
  protected DexFileVisitor dfv;
  
  public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames)
  {
    return dfv.visit(access_flags, className, superClass, interfaceNames);
  }
  
  public void visitEnd()
  {
    dfv.visitEnd();
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.visitors.DexFileAdapter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar;

public class Field
{
  private String name;
  private String owner;
  private String type;
  
  public Field(String owner, String name, String type)
  {
    this.owner = owner;
    this.type = type;
    this.name = name;
  }
  
  public String getName()
  {
    return name;
  }
  
  public String getOwner()
  {
    return owner;
  }
  
  public String getType()
  {
    return type;
  }
  
  public String toString()
  {
    return getOwner() + "." + getName() + " " + getType();
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.Field
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar;

public abstract interface OdexOpcodes
  extends DexOpcodes
{
  public static final int OP_THROW_VERIFICATION_ERROR = 237;
  public static final int OP_EXECUTE_INLINE = 238;
  public static final int OP_INVOKE_SUPER_QUICK = 250;
  public static final int OP_INVOKE_VIRTUAL_QUICK = 248;
  public static final int OP_IGET_QUICK = 242;
  public static final int OP_IPUT_QUICK = 245;
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.OdexOpcodes
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar;

public class DexException
  extends RuntimeException
{
  private static final long serialVersionUID = 1L;
  
  public DexException() {}
  
  public DexException(String message)
  {
    super(message);
  }
  
  public DexException(Throwable cause)
  {
    super(cause);
  }
  
  public DexException(String message, Throwable cause)
  {
    super(message, cause);
  }
  
  public DexException(Throwable cause, String messageFormat, Object... args)
  {
    this(String.format(messageFormat, args), cause);
  }
  
  public DexException(String messageFormat, Object... args)
  {
    this(String.format(messageFormat, args));
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.DexException
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar;

public abstract interface DexOpcodes
{
  public static final int ACC_PUBLIC = 1;
  public static final int ACC_PRIVATE = 2;
  public static final int ACC_PROTECTED = 4;
  public static final int ACC_STATIC = 8;
  public static final int ACC_FINAL = 16;
  public static final int ACC_SYNCHRONIZED = 32;
  public static final int ACC_VOLATILE = 64;
  public static final int ACC_BRIDGE = 64;
  public static final int ACC_VARARGS = 128;
  public static final int ACC_TRANSIENT = 128;
  public static final int ACC_NATIVE = 256;
  public static final int ACC_INTERFACE = 512;
  public static final int ACC_ABSTRACT = 1024;
  public static final int ACC_STRICT = 2048;
  public static final int ACC_SYNTHETIC = 4096;
  public static final int ACC_ANNOTATION = 8192;
  public static final int ACC_ENUM = 16384;
  public static final int ACC_CONSTRUCTOR = 65536;
  public static final int ACC_DECLARED_SYNCHRONIZED = 131072;
  public static final int TYPE_SINGLE = 0;
  public static final int TYPE_WIDE = 1;
  public static final int TYPE_OBJECT = 2;
  public static final int TYPE_BOOLEAN = 3;
  public static final int TYPE_BYTE = 4;
  public static final int TYPE_CHAR = 5;
  public static final int TYPE_SHORT = 6;
  public static final int TYPE_INT = 7;
  public static final int TYPE_FLOAT = 8;
  public static final int TYPE_LONG = 9;
  public static final int TYPE_DOUBLE = 10;
  public static final int OP_NOP = 0;
  public static final int OP_MOVE = 1;
  public static final int OP_MOVE_RESULT = 10;
  public static final int OP_MOVE_EXCEPTION = 13;
  public static final int OP_RETURN_VOID = 14;
  public static final int OP_RETURN = 15;
  public static final int OP_CONST = 20;
  public static final int OP_CONST_STRING = 26;
  public static final int OP_CONST_CLASS = 28;
  public static final int OP_MONITOR_ENTER = 29;
  public static final int OP_MONITOR_EXIT = 30;
  public static final int OP_CHECK_CAST = 31;
  public static final int OP_INSTANCE_OF = 32;
  public static final int OP_ARRAY_LENGTH = 33;
  public static final int OP_NEW_INSTANCE = 34;
  public static final int OP_NEW_ARRAY = 35;
  public static final int OP_FILLED_NEW_ARRAY = 36;
  public static final int OP_FILL_ARRAY_DATA = 38;
  public static final int OP_THROW = 39;
  public static final int OP_GOTO = 40;
  public static final int OP_PACKED_SWITCH = 43;
  public static final int OP_SPARSE_SWITCH = 44;
  public static final int OP_CMPL = 16711727;
  public static final int OP_CMPG = 16711728;
  public static final int OP_CMP = 16711729;
  public static final int OP_IF_EQ = 50;
  public static final int OP_IF_NE = 51;
  public static final int OP_IF_LT = 52;
  public static final int OP_IF_GE = 53;
  public static final int OP_IF_GT = 54;
  public static final int OP_IF_LE = 55;
  public static final int OP_IF_EQZ = 56;
  public static final int OP_IF_NEZ = 57;
  public static final int OP_IF_LTZ = 58;
  public static final int OP_IF_GEZ = 59;
  public static final int OP_IF_GTZ = 60;
  public static final int OP_IF_LEZ = 61;
  public static final int OP_AGET = 68;
  public static final int OP_APUT = 75;
  public static final int OP_IGET = 82;
  public static final int OP_IPUT = 89;
  public static final int OP_SGET = 96;
  public static final int OP_SPUT = 103;
  public static final int OP_INVOKE_VIRTUAL = 110;
  public static final int OP_INVOKE_SUPER = 111;
  public static final int OP_INVOKE_DIRECT = 112;
  public static final int OP_INVOKE_STATIC = 113;
  public static final int OP_INVOKE_INTERFACE = 114;
  public static final int OP_NEG = 16711803;
  public static final int OP_NOT = 16711804;
  public static final int OP_X_TO_Y = 16711809;
  public static final int OP_ADD = 16711824;
  public static final int OP_SUB = 16711825;
  public static final int OP_MUL = 16711826;
  public static final int OP_DIV = 16711827;
  public static final int OP_REM = 16711828;
  public static final int OP_AND = 16711829;
  public static final int OP_OR = 16711830;
  public static final int OP_XOR = 16711831;
  public static final int OP_SHL = 16711832;
  public static final int OP_SHR = 16711833;
  public static final int OP_USHR = 16711834;
  public static final int OP_ADD_INT_LIT_X = 16711896;
  public static final int OP_RSUB_INT_LIT_X = 16711897;
  public static final int OP_MUL_INT_LIT_X = 16711898;
  public static final int OP_DIV_INT_LIT_X = 16711899;
  public static final int OP_REM_INT_LIT_X = 16711900;
  public static final int OP_AND_INT_LIT_X = 16711901;
  public static final int OP_OR_INT_LIT_X = 16711902;
  public static final int OP_XOR_INT_LIT_X = 16711903;
  public static final int OP_SHL_INT_LIT_X = 16711904;
  public static final int OP_SHR_INT_LIT_X = 16711905;
  public static final int OP_USHR_INT_LIT_X = 16711906;
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.DexOpcodes
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar;

public class DexType
{
  public final String desc;
  
  public DexType(String desc)
  {
    this.desc = desc;
  }
  
  public String toString()
  {
    return desc;
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.DexType
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.util;

import com.googlecode.dex2jar.reader.DexFileReader;
import com.googlecode.dex2jar.visitors.DexClassVisitor;
import com.googlecode.dex2jar.visitors.OdexFileVisitor;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.io.FileUtils;

public class ASMifierFileV
  implements OdexFileVisitor
{
  String pkgName = "dex2jar.gen";
  File dir;
  ArrayOut file = new ArrayOut();
  int i = 0;
  
  public static void doData(byte[] data, File destdir)
    throws IOException
  {
    new DexFileReader(data).accept(new ASMifierFileV(destdir, null));
  }
  
  public static void doFile(File srcDex)
    throws IOException
  {
    doFile(srcDex, new File(srcDex.getParentFile(), srcDex.getName() + "_asmifier"));
  }
  
  public static void doFile(File srcDex, File destDir)
    throws IOException
  {
    doData(DexFileReader.readDex(srcDex), destDir);
  }
  
  public static void main(String... args)
    throws IOException
  {
    if (args.length < 1)
    {
      System.out.println("ASMifier 1.dex 2.dex ... n.dex");
      return;
    }
    String[] arrayOfString = args;int k = args.length;
    for (int j = 0; j < k; j++)
    {
      String s = arrayOfString[j];
      System.out.println("asmifier " + s);
      doFile(new File(s));
    }
  }
  
  public ASMifierFileV(File dir, String pkgName)
  {
    if (dir == null) {
      this.dir = new File(".");
    } else {
      this.dir = dir;
    }
    if (pkgName != null) {
      this.pkgName = pkgName;
    }
    file.s("package %s;", new Object[] { this.pkgName });
    file.s("import com.googlecode.dex2jar.*;");
    file.s("import com.googlecode.dex2jar.visitors.*;");
    file.s("import static org.apache.commons.codec.binary.Hex.*;");
    file.s("public class Main {");
    file.push();
    file.s("public static void accept(DexFileVisitor v) {");
    file.push();
  }
  
  static void write(ArrayOut out, File file)
  {
    StringBuilder sb = new StringBuilder();
    List<String> list = new ArrayList(array.size());
    for (int i = 0; i < array.size(); i++)
    {
      sb.setLength(0);
      int p = ((Integer)is.get(i)).intValue();
      for (int j = 0; j < p; j++) {
        sb.append("    ");
      }
      sb.append((String)array.get(i));
      list.add(sb.toString());
    }
    try
    {
      FileUtils.writeLines(file, "UTF-8", list);
    }
    catch (IOException e)
    {
      e.printStackTrace();
    }
  }
  
  public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames)
  {
    final String n = String.format("C%04d_", new Object[] { Integer.valueOf(i++) }) + 
      className.substring(1, className.length() - 1).replace('/', '_').replace('$', '_');
    file.s("%s.accept(v);", new Object[] { n });
    new ASMifierClassV(pkgName, n, access_flags, className, superClass, interfaceNames)
    {
      public void visitEnd()
      {
        super.visitEnd();
        ASMifierFileV.write(out, new File(dir, pkgName.replace('.', '/') + '/' + n + ".java"));
      }
    };
  }
  
  public void visitEnd()
  {
    file.pop();
    file.s("}");
    file.pop();
    file.s("}");
    write(file, new File(dir, pkgName.replace('.', '/') + "/Main.java"));
  }
  
  public void visitDepedence(String name, byte[] checksum)
  {
    file.s("((OdexFileVisitor)v).visitDepedence(%s,decodeHex(%s.toCharArray()));", new Object[] { Escape.v(name), 
      Escape.v(new String(Hex.encodeHex(checksum))) });
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.util.ASMifierFileV
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.util;

import com.googlecode.dex2jar.visitors.DexAnnotationAble;
import com.googlecode.dex2jar.visitors.DexAnnotationVisitor;
import com.googlecode.dex2jar.visitors.DexCodeVisitor;
import com.googlecode.dex2jar.visitors.DexMethodVisitor;

class ASMifierClassV$2
  implements DexMethodVisitor
{
  ASMifierClassV$2(ASMifierClassV paramASMifierClassV, ArrayOut paramArrayOut) {}
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return new ASMifierAnnotationV("mv", val$m, name, visible);
  }
  
  public DexAnnotationAble visitParameterAnnotation(final int index)
  {
    val$m.s("DexAnnotationAble pv%02d = mv.visitParameterAnnotation(%s);", new Object[] { Integer.valueOf(index), Integer.valueOf(index) });
    new DexAnnotationAble()
    {
      public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
      {
        return new ASMifierAnnotationV(String.format("pv%02d", new Object[] { Integer.valueOf(index) }), val$m, name, visible);
      }
    };
  }
  
  public DexCodeVisitor visitCode()
  {
    val$m.s("DexCodeVisitor code=mv.visitCode();");
    val$m.s("if(code != null) {");
    val$m.push();
    new ASMifierCodeV(val$m)
    {
      public void visitEnd()
      {
        super.visitEnd();
        m.pop();
        m.s("}");
      }
    };
  }
  
  public void visitEnd()
  {
    val$m.s("mv.visitEnd();");
    val$m.pop();
    val$m.s("}");
    val$m.pop();
    val$m.s("}");
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.util.ASMifierClassV.2
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.util;

import com.googlecode.dex2jar.visitors.DexAnnotationAble;
import com.googlecode.dex2jar.visitors.DexAnnotationVisitor;

class ASMifierClassV$2$1
  implements DexAnnotationAble
{
  ASMifierClassV$2$1(ASMifierClassV.2 param2, int paramInt, ArrayOut paramArrayOut) {}
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return new ASMifierAnnotationV(String.format("pv%02d", new Object[] { Integer.valueOf(val$index) }), val$m, name, visible);
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.util.ASMifierClassV.2.1
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.util;

import com.googlecode.dex2jar.DexLabel;
import com.googlecode.dex2jar.Method;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DumpDexCodeAdapter
  extends AbstractDumpDexCodeAdapter
{
  private static class TryCatch
  {
    public DexLabel end;
    public DexLabel[] handlers;
    public DexLabel start;
    public String[] types;
    
    public TryCatch(DexLabel start, DexLabel end, DexLabel[] handlers, String[] types)
    {
      this.start = start;
      this.end = end;
      this.handlers = handlers;
      this.types = types;
    }
  }
  
  private List<DexLabel> labels = new ArrayList();
  private Method method;
  private PrintWriter out;
  private List<TryCatch> trys = new ArrayList();
  private Map<DexLabel, Integer> lines = new HashMap();
  private boolean isStatic;
  
  public DumpDexCodeAdapter(boolean isStatic, Method m, PrintWriter out)
  {
    method = m;
    this.out = out;
    this.isStatic = isStatic;
  }
  
  protected void info(int opcode, String format, Object... args)
  {
    String s = String.format(format, args);
    if (opcode < 0) {
      out.printf("%-20s|%5s|%s\n", new Object[] { "", "", s });
    } else {
      out.printf("%-20s|%5s|%s\n", new Object[] { DexOpcodeDump.dump(opcode), "", s });
    }
  }
  
  protected String labelToString(DexLabel label)
  {
    int i = labels.indexOf(label);
    if (i > -1) {
      return "L" + i;
    }
    labels.add(label);
    return "L" + labels.indexOf(label);
  }
  
  public void visitArguments(int total, int[] args)
  {
    int i = 0;
    if (!isStatic)
    {
      int reg = args[(i++)];
      type = Dump.toJavaClass(method.getOwner());
      out.printf("%20s:v%d   //%s\n", new Object[] { "this", Integer.valueOf(reg), type });
    }
    String[] arrayOfString;
    String str1 = (arrayOfString = method.getParameterTypes()).length;
    for (String type = 0; type < str1; type++)
    {
      String type = arrayOfString[type];
      int reg = args[(i++)];
      type = Dump.toJavaClass(type);
      out.printf("%20s:v%d   //%s\n", new Object[] { "", Integer.valueOf(reg), type });
    }
  }
  
  public void visitLabel(DexLabel label)
  {
    boolean find = false;
    for (TryCatch tc : trys) {
      if (label.equals(end))
      {
        info(-1, " } // TC_%d", new Object[] { Integer.valueOf(trys.indexOf(tc)) });
        find = true;
        break;
      }
    }
    Integer line = (Integer)lines.get(label);
    if (line != null) {
      out.printf("%-20s|%5s: line %d\n", new Object[] { "LABEL", "L" + labelToString(label), line });
    } else {
      out.printf("%-20s|%5s:\n", new Object[] { "LABEL", "L" + labelToString(label) });
    }
    if (!find) {
      for (TryCatch tc : trys)
      {
        if (label.equals(start))
        {
          info(-1, "try { // TC_%d ", new Object[] { Integer.valueOf(trys.indexOf(tc)) });
          break;
        }
        for (int i = 0; i < handlers.length; i++)
        {
          String type = types[i];
          DexLabel handler = handlers[i];
          if (label.equals(handler))
          {
            String t = type;
            info(-1, "catch(%s) // TC_%d", new Object[] { t == null ? "all" : t, Integer.valueOf(trys.indexOf(tc)) });
            break;
          }
        }
      }
    }
  }
  
  public void visitTryCatch(DexLabel start, DexLabel end, DexLabel[] handlers, String[] types)
  {
    TryCatch tc = new TryCatch(start, end, handlers, types);
    trys.add(tc);
    int id = trys.indexOf(tc);
    for (int i = 0; i < types.length; i++)
    {
      String type = types[i];
      DexLabel handler = handlers[i];
      if (type == null) {
        out.printf("TR_%d L%s ~ L%s > L%s all\n", new Object[] { Integer.valueOf(id), labelToString(start), labelToString(end), 
          labelToString(handler) });
      } else {
        out.printf("TR_%d L%s ~ L%s > L%s %s\n", new Object[] { Integer.valueOf(id), labelToString(start), labelToString(end), 
          labelToString(handler), type });
      }
    }
    super.visitTryCatch(start, end, handlers, types);
  }
  
  public void visitLineNumber(int line, DexLabel label)
  {
    lines.put(label, Integer.valueOf(line));
  }
  
  public void visitLocalVariable(String name, String type, String signature, DexLabel start, DexLabel end, int reg)
  {
    out.printf("LOCAL_VARIABLE L%s ~ L%s v%d -> %s // %s \n", new Object[] { labelToString(start), labelToString(end), Integer.valueOf(reg), name, 
      type });
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.util.DumpDexCodeAdapter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */
package com.googlecode.dex2jar.util;

import com.googlecode.dex2jar.DexLabel;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;
import com.googlecode.dex2jar.visitors.EmptyVisitor;

public abstract class AbstractDumpDexCodeAdapter
  extends EmptyVisitor
{
  protected static final String[] causes = { "no-error", "generic-error", "no-such-class", 
    "no-such-field", "no-such-method", "illegal-class-access", "illegal-field-access", "illegal-method-access", 
    "class-change-error", "instantiation-error" };
  
  protected static String toJavaClass(String type)
  {
    return Dump.toJavaClass(type);
  }
  
  protected abstract void info(int paramInt, String paramString, Object... paramVarArgs);
  
  protected abstract String labelToString(DexLabel paramDexLabel);
  
  public void visitArrayStmt(int opcode, int value, int array, int index, int xt)
  {
    switch (opcode)
    {
    case 75: 
      info(opcode, "v%d[v%d]=v%d", new Object[] { Integer.valueOf(array), Integer.valueOf(index), Integer.valueOf(value) });
      break;
    case 68: 
      info(opcode, "v%d=v%d[v%d]", new Object[] { Integer.valueOf(value), Integer.valueOf(array), Integer.valueOf(index) });
    }
  }
  
  public void visitBinopLitXStmt(int opcode, int saveToReg, int opReg, int value)
  {
    switch (opcode)
    {
    case 16711901: 
      info(opcode, "v%d = v%d & %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711896: 
      info(opcode, "v%d = v%d + %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711900: 
      info(opcode, "v%d = v%d %% %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711899: 
      info(opcode, "v%d = v%d / %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711898: 
      info(opcode, "v%d = v%d * %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711905: 
      info(opcode, "v%d = v%d >> %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711904: 
      info(opcode, "v%d = v%d << %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711906: 
      info(opcode, "v%d = v%d >>> %d", new Object[] { Integer.valueOf(saveToReg), Integer.valueOf(opReg), Integer.valueOf(value) });
      break;
    case 16711902: 
      info(opcode, "v%d = v%d | %d", new Object[] { Integer.valueOf(saveToReg),
1 2 3 4 5 6 7 8

Further reading...

For more information on Java 1.5 Tiger, you may find Java 1.5 Tiger, A developer's Notebook by D. Flanagan and B. McLaughlin from O'Reilly of interest.

New!JAR listings


Copyright 2006-2017. Infinite Loop Ltd