dex-reader-1.12

16:35:20.228 INFO  jd.cli.Main - Decompiling dex-reader-1.12.jar
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.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 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;

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;

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 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 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 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 handler, String type)
  {
    dcv.visitTryCatch(start, end, handler, type);
  }
  
  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 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;

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.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;

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 paramDexLabel3, String paramString);
  
  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;

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 handler, String type) {}
  
  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 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.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.util;

import com.googlecode.dex2jar.Method;
import com.googlecode.dex2jar.visitors.DexCodeVisitor;
import com.googlecode.dex2jar.visitors.EmptyVisitor;

class Dump$2$1
  extends EmptyVisitor
{
  Dump$2$1(Dump.2 param2, int paramInt, Method paramMethod) {}
  
  public DexCodeVisitor visitCode()
  {
    return new DumpDexCodeAdapter((val$accesFlags & 0x8) != 0, val$method, Dump.access$000(this$1.this$0));
  }
}

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

import java.io.File;

class ASMifierFileV$1
  extends ASMifierClassV
{
  ASMifierFileV$1(ASMifierFileV paramASMifierFileV, String x0, String x1, int x2, String x3, String x4, String[] x5, String paramString1)
  {
    super(x0, x1, x2, x3, x4, x5);
  }
  
  public void visitEnd()
  {
    super.visitEnd();
    ASMifierFileV.write(out, new File(this$0.dir, this$0.pkgName.replace('.', '/') + '/' + val$n + ".java"));
  }
}

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

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

class ASMifierClassV$1
  implements DexFieldVisitor
{
  ASMifierClassV$1(ASMifierClassV paramASMifierClassV, ArrayOut paramArrayOut) {}
  
  public DexAnnotationVisitor visitAnnotation(String name, boolean visible)
  {
    return new ASMifierAnnotationV("fv", val$f, name, visible);
  }
  
  public void visitEnd()
  {
    val$f.s("fv.visitEnd();");
    val$f.pop();
    val$f.s("}");
    val$f.pop();
    val$f.s("}");
  }
}

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

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

final class Dump$1
  implements Dump.WriterManager
{
  Dump$1(ZipOutputStream paramZipOutputStream) {}
  
  public PrintWriter get(String name)
  {
    try
    {
      String s = name.replace('.', '/') + ".dump.txt";
      ZipEntry zipEntry = new ZipEntry(s);
      val$zos.putNextEntry(zipEntry);
      new PrintWriter(val$zos)
      {
        public void close()
        {
          try
          {
            val$zos.closeEntry();
          }
          catch (IOException e)
          {
            throw new RuntimeException(e);
          }
        }
      };
    }
    catch (Exception e)
    {
      throw new RuntimeException(e);
    }
  }
}

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

import java.io.IOException;
import java.io.Writer;

public final class Utf8Utils
{
  public static byte[] stringToUtf8Bytes(String string)
  {
    int len = string.length();
    byte[] bytes = new byte[len * 3];
    int outAt = 0;
    for (int i = 0; i < len; i++)
    {
      char c = string.charAt(i);
      if ((c != 0) && (c < '?'))
      {
        bytes[outAt] = ((byte)c);
        outAt++;
      }
      else if (c < '?')
      {
        bytes[outAt] = ((byte)(c >> '\006' & 0x1F | 0xC0));
        bytes[(outAt + 1)] = ((byte)(c & 0x3F | 0x80));
        outAt += 2;
      }
      else
      {
        bytes[outAt] = ((byte)(c >> '\f' & 0xF | 0xE0));
        bytes[(outAt + 1)] = ((byte)(c >> '\006' & 0x3F | 0x80));
        bytes[(outAt + 2)] = ((byte)(c & 0x3F | 0x80));
        outAt += 3;
      }
    }
    byte[] result = new byte[outAt];
    System.arraycopy(bytes, 0, result, 0, outAt);
    return result;
  }
  
  private static char[] tempBuffer = null;
  
  public static String utf8BytesToString(byte[] bytes, int start, int length)
  {
    if ((tempBuffer == null) || (tempBuffer.length < length)) {
      tempBuffer = new char[length];
    }
    char[] chars = tempBuffer;
    int outAt = 0;
    for (int at = start; length > 0;)
    {
      int v0 = bytes[at] & 0xFF;
      char out;
      switch (v0 >> 4)
      {
      case 0: 
      case 1: 
      case 2: 
      case 3: 
      case 4: 
      case 5: 
      case 6: 
      case 7: 
        length--;
        if (v0 == 0) {
          return throwBadUtf8(v0, at);
        }
        out = (char)v0;
        at++;
        break;
      case 12: 
      case 13: 
        length -= 2;
        if (length < 0) {
          return throwBadUtf8(v0, at);
        }
        int v1 = bytes[(at + 1)] & 0xFF;
        if ((v1 & 0xC0) != 128) {
          return throwBadUtf8(v1, at + 1);
        }
        int value = (v0 & 0x1F) << 6 | v1 & 0x3F;
        if ((value != 0) && (value < 128)) {
          return throwBadUtf8(v1, at + 1);
        }
        out = (char)value;
        at += 2;
        break;
      case 14: 
        length -= 3;
        if (length < 0) {
          return throwBadUtf8(v0, at);
        }
        int v1 = bytes[(at + 1)] & 0xFF;
        if ((v1 & 0xC0) != 128) {
          return throwBadUtf8(v1, at + 1);
        }
        int v2 = bytes[(at + 2)] & 0xFF;
        if ((v1 & 0xC0) != 128) {
          return throwBadUtf8(v2, at + 2);
        }
        int value = (v0 & 0xF) << 12 | (v1 & 0x3F) << 6 | v2 & 0x3F;
        if (value < 2048) {
          return throwBadUtf8(v2, at + 2);
        }
        out = (char)value;
        at += 3;
        break;
      case 8: 
      case 9: 
      case 10: 
      case 11: 
      default: 
        return throwBadUtf8(v0, at);
      }
      chars[outAt] = out;
      outAt++;
    }
    return new String(chars, 0, outAt);
  }
  
  private static String throwBadUtf8(int value, int offset)
  {
    throw new IllegalArgumentException("bad utf-8 byte " + String.format("%02x", new Object[] { Integer.valueOf(value) }) + " at offset " + String.format("%08x", new Object[] { Integer.valueOf(offset) }));
  }
  
  public static void writeEscapedChar(Writer writer, char c)
    throws IOException
  {
    if ((c >= ' ') && (c < ''))
    {
      if ((c == '\'') || (c == '"') || (c == '\\')) {
        writer.write(92);
      }
      writer.write(c);
      return;
    }
    if (c <= '') {
      switch (c)
      {
      case '\n': 
        writer.write("\\n");
        return;
      case '\r': 
        writer.write("\\r");
        return;
      case '\t': 
        writer.write("\\t");
        return;
      }
    }
    writer.write("\\u");
    writer.write(Character.forDigit(c >> '\f', 16));
    writer.write(Character.forDigit(c >> '\b' & 0xF, 16));
    writer.write(Character.forDigit(c >> '\004' & 0xF, 16));
    writer.write(Character.forDigit(c & 0xF, 16));
  }
  
  public static void writeEscapedString(Writer writer, String value)
    throws IOException
  {
    for (int i = 0; i < value.length(); i++)
    {
      char c = value.charAt(i);
      if ((c >= ' ') && (c < ''))
      {
        if ((c == '\'') || (c == '"') || (c == '\\')) {
          writer.write(92);
        }
        writer.write(c);
      }
      else if (c <= '')
      {
        switch (c)
        {
        case '\n': 
          writer.write("\\n");
          break;
        case '\r': 
          writer.write("\\r");
          break;
        case '\t': 
          writer.write("\\t");
          break;
        }
      }
      else
      {
        writer.write("\\u");
        writer.write(Character.forDigit(c >> '\f', 16));
        writer.write(Character.forDigit(c >> '\b' & 0xF, 16));
        writer.write(Character.forDigit(c >> '\004' & 0xF, 16));
        writer.write(Character.forDigit(c & 0xF, 16));
      }
    }
  }
  
  public static String escapeString(String value)
  {
    int len = value.length();
    StringBuilder sb = new StringBuilder(len * 3 / 2);
    for (int i = 0; i < len; i++)
    {
      char c = value.charAt(i);
      if ((c >= ' ') && (c < ''))
      {
        if ((c == '\'') || (c == '"') || (c == '\\')) {
          sb.append('\\');
        }
        sb.append(c);
      }
      else if (c <= '')
      {
        switch (c)
        {
        case '\n': 
          sb.append("\\n");
          break;
        case '\r': 
          sb.append("\\r");
          break;
        case '\t': 
          sb.append("\\t");
          break;
        }
      }
      else
      {
        sb.append("\\u");
        sb.append(Character.forDigit(c >> '\f', 16));
        sb.append(Character.forDigit(c >> '\b' & 0xF, 16));
        sb.append(Character.forDigit(c >> '\004' & 0xF, 16));
        sb.append(Character.forDigit(c & 0xF, 16));
      }
    }
    return sb.toString();
  }
}

/* Location:
 * Qualified Name:     com.googlecode.dex2jar.util.Utf8Utils
 * 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.DexOpcodes;
import com.googlecode.dex2jar.Field;
import com.googlecode.dex2jar.Method;
import com.googlecode.dex2jar.visitors.OdexCodeVisitor;

public class ASMifierCodeV
  implements OdexCodeVisitor, DexOpcodes
{
  Out m;
  
  public ASMifierCodeV(Out m)
  {
    this.m = m;
  }
  
  public void visitArrayStmt(int opcode, int formOrToReg, int arrayReg, int indexReg, int xt)
  {
    m.s("code.visitArrayStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(formOrToReg), Integer.valueOf(arrayReg), Integer.valueOf(indexReg), xt(xt) });
  }
  
  public void visitBinopLitXStmt(int opcode, int distReg, int srcReg, int content)
  {
    m.s("code.visitBinopLitXStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(distReg), Integer.valueOf(srcReg), Integer.valueOf(content) });
  }
  
  public void visitBinopStmt(int opcode, int toReg, int r1, int r2, int xt)
  {
    m.s("code.visitBinopStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), Integer.valueOf(r1), Integer.valueOf(r2), xt(xt) });
  }
  
  public void visitClassStmt(int opcode, int a, int b, String type)
  {
    m.s("code.visitClassStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(a), Integer.valueOf(b), Escape.v(type) });
  }
  
  public void visitClassStmt(int opcode, int saveTo, String type)
  {
    m.s("code.visitClassStmt(%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(saveTo), Escape.v(type) });
  }
  
  public void visitCmpStmt(int opcode, int distReg, int bB, int cC, int xt)
  {
    m.s("code.visitCmpStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(distReg), Integer.valueOf(bB), Integer.valueOf(cC), xt(xt) });
  }
  
  public void visitConstStmt(int opcode, int toReg, Object value, int xt)
  {
    if ((value instanceof Integer)) {
      m.s("code.visitConstStmt(%s,%s,%s,%s); // int: 0x%08x  float:%f", new Object[] { op(opcode), Integer.valueOf(toReg), Escape.v(value), xt(xt), value, Float.valueOf(Float.intBitsToFloat(((Integer)value).intValue())) });
    } else if ((value instanceof Long)) {
      m.s("code.visitConstStmt(%s,%s,%s,%s); // long: 0x%016x  double:%f", new Object[] { op(opcode), Integer.valueOf(toReg), Escape.v(value), xt(xt), value, Double.valueOf(Double.longBitsToDouble(((Long)value).longValue())) });
    } else {
      m.s("code.visitConstStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), Escape.v(value), xt(xt) });
    }
  }
  
  public void visitFieldStmt(int opcode, int fromOrToReg, Field field, int xt)
  {
    m.s("code.visitFieldStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(fromOrToReg), Escape.v(field), xt(xt) });
  }
  
  public void visitFieldStmt(int opcode, int fromOrToReg, int objReg, Field field, int xt)
  {
    m.s("code.visitFieldStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(fromOrToReg), Integer.valueOf(objReg), Escape.v(field), xt(xt) });
  }
  
  public void visitFillArrayStmt(int opcode, int aA, int elemWidth, int initLength, Object[] values)
  {
    m.s("code.visitFillArrayStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(aA), Integer.valueOf(elemWidth), Integer.valueOf(initLength), Escape.v(values) });
  }
  
  public void visitFilledNewArrayStmt(int opcode, int[] args, String type)
  {
    m.s("code.visitFilledNewArrayStmt(%s,%s,%s);", new Object[] { op(opcode), Escape.v(args), Escape.v(type) });
  }
  
  int i = 0;
  
  private Object v(DexLabel l)
  {
    if (info == null)
    {
      info = ("L" + i++);
      m.s("DexLabel %s=new DexLabel();", new Object[] { info });
    }
    return info;
  }
  
  String op(int op)
  {
    return "OP_" + DexOpcodeDump.dump(op);
  }
  
  String xt(int vt)
  {
    switch (vt)
    {
    case 0: 
      return "TYPE_SINGLE";
    case 1: 
      return "TYPE_WIDE";
    case 2: 
      return "TYPE_OBJECT";
    case 3: 
      return "TYPE_BOOLEAN";
    case 4: 
      return "TYPE_BYTE";
    case 5: 
      return "TYPE_CHAR";
    case 6: 
      return "TYPE_SHORT";
    case 7: 
      return "TYPE_INT";
    case 8: 
      return "TYPE_FLOAT";
    case 9: 
      return "TYPE_LONG";
    case 10: 
      return "TYPE_DOUBLE";
    }
    return Integer.toString(vt);
  }
  
  public void visitJumpStmt(int opcode, int a, int b, DexLabel label)
  {
    m.s("code.visitJumpStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(a), Integer.valueOf(b), v(label) });
  }
  
  public void visitJumpStmt(int opcode, int reg, DexLabel label)
  {
    m.s("code.visitJumpStmt(%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(reg), v(label) });
  }
  
  public void visitJumpStmt(int opcode, DexLabel label)
  {
    m.s("code.visitJumpStmt(%s,%s);", new Object[] { op(opcode), v(label) });
  }
  
  public void visitLookupSwitchStmt(int opcode, int aA, DexLabel label, int[] cases, DexLabel[] labels)
  {
    StringBuilder sb = new StringBuilder();
    boolean first = true;
    for (DexLabel dexLabel : labels)
    {
      if (first) {
        first = false;
      } else {
        sb.append(",");
      }
      sb.append(v(dexLabel));
    }
    m.s("code.visitLookupSwitchStmt(%s,%s,%s,%s,new DexLabel[]{%s});", new Object[] { op(opcode), Integer.valueOf(aA), v(label), Escape.v(cases), sb.toString() });
  }
  
  public void visitMethodStmt(int opcode, int[] args, Method method)
  {
    m.s("code.visitMethodStmt(%s,%s,%s);", new Object[] { op(opcode), Escape.v(args), Escape.v(method) });
  }
  
  public void visitMonitorStmt(int opcode, int reg)
  {
    m.s("code.visitMonitorStmt(%s,%s);", new Object[] { op(opcode), Integer.valueOf(reg) });
  }
  
  public void visitMoveStmt(int opcode, int toReg, int xt)
  {
    m.s("code.visitMoveStmt(%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), xt(xt) });
  }
  
  public void visitMoveStmt(int opcode, int toReg, int fromReg, int xt)
  {
    m.s("code.visitMoveStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), Integer.valueOf(fromReg), xt(xt) });
  }
  
  public void visitReturnStmt(int opcode)
  {
    m.s("code.visitReturnStmt(%s);", new Object[] { op(opcode) });
  }
  
  public void visitReturnStmt(int opcode, int reg, int xt)
  {
    m.s("code.visitReturnStmt(%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(reg), xt(xt) });
  }
  
  public void visitTableSwitchStmt(int opcode, int aA, DexLabel label, int first_case, int last_case, DexLabel[] labels)
  {
    StringBuilder sb = new StringBuilder();
    boolean first = true;
    for (DexLabel dexLabel : labels)
    {
      if (first) {
        first = false;
      } else {
        sb.append(",");
      }
      sb.append(v(dexLabel));
    }
    m.s("code.visitTableSwitchStmt(%s,%s,%s,%s,%s,new DexLabel[]{%s});", new Object[] { op(opcode), Integer.valueOf(aA), v(label), Integer.valueOf(first_case), Integer.valueOf(last_case), sb.toString() });
  }
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xt)
  {
    m.s("code.visitUnopStmt(%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), Integer.valueOf(fromReg), xt(xt) });
  }
  
  public void visitUnopStmt(int opcode, int toReg, int fromReg, int xta, int xtb)
  {
    m.s("code.visitUnopStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(toReg), Integer.valueOf(fromReg), xt(xta), xt(xtb) });
  }
  
  public void visitTryCatch(DexLabel start, DexLabel end, DexLabel handler, String type)
  {
    m.s("code.visitTryCatch(%s,%s,%s,%s);", new Object[] { v(start), v(end), v(handler), Escape.v(type) });
  }
  
  public void visitArguments(int total, int[] args)
  {
    m.s("code.visitArguments(%s,%s);", new Object[] { Integer.valueOf(total), Escape.v(args) });
  }
  
  public void visitEnd()
  {
    m.s("code.visitEnd();");
  }
  
  public void visitLabel(DexLabel label)
  {
    m.s("code.visitLabel(%s);", new Object[] { v(label) });
  }
  
  public void visitLineNumber(int line, DexLabel label)
  {
    m.s("code.visitLineNumber(%s,%s);", new Object[] { Integer.valueOf(line), v(label) });
  }
  
  public void visitLocalVariable(String name, String type, String signature, DexLabel start, DexLabel end, int reg)
  {
    m.s("code.visitLocalVariable(%s,%s,%s,%s,%s,%s);", new Object[] { Escape.v(name), Escape.v(type), Escape.v(signature), v(start), v(end), Integer.valueOf(reg) });
  }
  
  public void visitReturnStmt(int opcode, int cause, Object ref)
  {
    m.s("((OdexCodeVisitor)code).visitReturnStmt(%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(cause), Escape.v(ref) });
  }
  
  public void visitMethodStmt(int opcode, int[] args, int a)
  {
    m.s("((OdexCodeVisitor)code).visitMethodStmt(%s,%s,%s);", new Object[] { op(opcode), Escape.v(args), Integer.valueOf(a) });
  }
  
  public void visitFieldStmt(int opcode, int fromOrToReg, int objReg, int fieldoff, int xt)
  {
    m.s("((OdexCodeVisitor)code).visitFieldStmt(%s,%s,%s,%s,%s);", new Object[] { op(opcode), Integer.valueOf(fromOrToReg), Integer.valueOf(objReg), Integer.valueOf(fieldoff), xt(xt) });
  }
}

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

import java.util.ArrayList;
import java.util.List;

public class ArrayOut
  implements Out
{
  int i = 0;
  public List<String> array = new ArrayList();
  public List<Integer> is = new ArrayList();
  
  public void push()
  {
    i += 1;
  }
  
  public void s(String s)
  {
    is.add(Integer.valueOf(i));
    array.add(s);
  }
  
  public void s(String format, Object... arg)
  {
    s(String.format(format, arg));
  }
  
  public void pop()
  {
    i -= 1;
  }
}

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

import com.googlecode.dex2jar.DexException;
import com.googlecode.dex2jar.OdexOpcodes;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

public final class DexOpcodeDump
{
  private static final Map<Integer, String> map;
  
  static
  {
    Field[] fs = OdexOpcodes.class.getFields();
    map = new HashMap(fs.length);
    for (Field f : fs)
    {
      f.setAccessible(true);
      if (f.getName().startsWith("OP_")) {
        try
        {
          map.put(Integer.valueOf(f.getInt(null)), f.getName().substring(3));
        }
        catch (Exception e) {}
      }
    }
  }
  
  public static final String dump(int opcode)
  {
    String s = (String)map.get(Integer.valueOf(opcode));
    if (s == null) {
      throw new DexException("can't dump opcode %08x", new Object[] { Integer.valueOf(opcode) });
    }
    return s;
  }
}

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

import com.googlecode.dex2jar.visitors.DexAnnotationVisitor;

public class ASMifierAnnotationV
  implements DexAnnotation
1 2 3 4 5 6

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