emma_device

16:35:34.751 INFO  jd.cli.Main - Decompiling emma_device.jar
import com.vladium.emma.Command;
import com.vladium.emma.EMMARuntimeException;

public final class emmarun
{
  public static void main(String[] paramArrayOfString)
    throws EMMARuntimeException
  {
    Command localCommand = Command.create("run", emmarun.class.getName(), paramArrayOfString);
    localCommand.run();
  }
}

/* Location:
 * Qualified Name:     emmarun
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.opcodes;

public abstract interface IOpcodeVisitor
{
  public abstract void visit(int paramInt1, boolean paramBoolean, int paramInt2, Object paramObject);
}

/* Location:
 * Qualified Name:     com.vladium.jcd.opcodes.IOpcodeVisitor
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.opcodes;

public final class IOpcodes$clinit
{
  static final boolean[] _CONDITIONAL_BRANCHES;
  static final boolean[] _COMPOUND_CONDITIONAL_BRANCHES;
  static final boolean[] _UNCONDITIONAL_BRANCHES;
  static final boolean[] _BRANCHES;
  static final int[] _NARROW_SIZE;
  static final int[] _WIDE_SIZE;
  
  static
  {
    int i = IOpcodes.MNEMONICS.length;
    
    _CONDITIONAL_BRANCHES = new boolean[i];
    
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['?'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    _CONDITIONAL_BRANCHES['�'] = true;
    
    _COMPOUND_CONDITIONAL_BRANCHES = new boolean[i];
    
    _COMPOUND_CONDITIONAL_BRANCHES['�'] = true;
    _COMPOUND_CONDITIONAL_BRANCHES['�'] = true;
    
    _UNCONDITIONAL_BRANCHES = new boolean[i];
    
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    _UNCONDITIONAL_BRANCHES['�'] = true;
    
    _UNCONDITIONAL_BRANCHES['�'] = true;
    
    _BRANCHES = new boolean[i];
    for (int j = 0; j < i; j++) {
      if (_CONDITIONAL_BRANCHES[j] != 0) {
        _BRANCHES[j] = true;
      }
    }
    for (j = 0; j < i; j++) {
      if (_COMPOUND_CONDITIONAL_BRANCHES[j] != 0) {
        _BRANCHES[j] = true;
      }
    }
    for (j = 0; j < i; j++) {
      if (_UNCONDITIONAL_BRANCHES[j] != 0) {
        _BRANCHES[j] = true;
      }
    }
    _NARROW_SIZE = new int[i];
    for (j = 0; j < i; j++) {
      _NARROW_SIZE[j] = 1;
    }
    _NARROW_SIZE[16] = 2;
    _NARROW_SIZE[17] = 3;
    
    _NARROW_SIZE[18] = 2;
    _NARROW_SIZE[19] = 3;
    _NARROW_SIZE[20] = 3;
    
    _NARROW_SIZE[21] = 2;
    _NARROW_SIZE[22] = 2;
    _NARROW_SIZE[23] = 2;
    _NARROW_SIZE[24] = 2;
    _NARROW_SIZE[25] = 2;
    _NARROW_SIZE[54] = 2;
    _NARROW_SIZE[55] = 2;
    _NARROW_SIZE[56] = 2;
    _NARROW_SIZE[57] = 2;
    _NARROW_SIZE[58] = 2;
    
    _NARROW_SIZE['?'] = 3;
    
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['?'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    
    _NARROW_SIZE['�'] = 2;
    
    _NARROW_SIZE['�'] = -1;
    _NARROW_SIZE['�'] = 0;
    
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    
    _NARROW_SIZE['�'] = 5;
    
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 3;
    
    _NARROW_SIZE['�'] = 2;
    _NARROW_SIZE['�'] = 3;
    _NARROW_SIZE['�'] = 4;
    
    _NARROW_SIZE['�'] = 5;
    _NARROW_SIZE['�'] = 5;
    
    _WIDE_SIZE = (int[])_NARROW_SIZE.clone();
    
    _WIDE_SIZE[21] = 3;
    _WIDE_SIZE[22] = 3;
    _WIDE_SIZE[23] = 3;
    _WIDE_SIZE[24] = 3;
    _WIDE_SIZE[25] = 3;
    _WIDE_SIZE[54] = 3;
    _WIDE_SIZE[55] = 3;
    _WIDE_SIZE[56] = 3;
    _WIDE_SIZE[57] = 3;
    _WIDE_SIZE[58] = 3;
    
    _WIDE_SIZE['?'] = 5;
    
    _WIDE_SIZE['�'] = 3;
  }
}

/* Location:
 * Qualified Name:     com.vladium.jcd.opcodes.IOpcodes.clinit
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.opcodes;

public abstract interface IOpcodes
{
  public static final int _nop = 0;
  public static final int _aconst_null = 1;
  public static final int _iconst_m1 = 2;
  public static final int _iconst_0 = 3;
  public static final int _iconst_1 = 4;
  public static final int _iconst_2 = 5;
  public static final int _iconst_3 = 6;
  public static final int _iconst_4 = 7;
  public static final int _iconst_5 = 8;
  public static final int _lconst_0 = 9;
  public static final int _lconst_1 = 10;
  public static final int _fconst_0 = 11;
  public static final int _fconst_1 = 12;
  public static final int _fconst_2 = 13;
  public static final int _dconst_0 = 14;
  public static final int _dconst_1 = 15;
  public static final int _bipush = 16;
  public static final int _sipush = 17;
  public static final int _ldc = 18;
  public static final int _ldc_w = 19;
  public static final int _ldc2_w = 20;
  public static final int _iload = 21;
  public static final int _lload = 22;
  public static final int _fload = 23;
  public static final int _dload = 24;
  public static final int _aload = 25;
  public static final int _iload_0 = 26;
  public static final int _iload_1 = 27;
  public static final int _iload_2 = 28;
  public static final int _iload_3 = 29;
  public static final int _lload_0 = 30;
  public static final int _lload_1 = 31;
  public static final int _lload_2 = 32;
  public static final int _lload_3 = 33;
  public static final int _fload_0 = 34;
  public static final int _fload_1 = 35;
  public static final int _fload_2 = 36;
  public static final int _fload_3 = 37;
  public static final int _dload_0 = 38;
  public static final int _dload_1 = 39;
  public static final int _dload_2 = 40;
  public static final int _dload_3 = 41;
  public static final int _aload_0 = 42;
  public static final int _aload_1 = 43;
  public static final int _aload_2 = 44;
  public static final int _aload_3 = 45;
  public static final int _iaload = 46;
  public static final int _laload = 47;
  public static final int _faload = 48;
  public static final int _daload = 49;
  public static final int _aaload = 50;
  public static final int _baload = 51;
  public static final int _caload = 52;
  public static final int _saload = 53;
  public static final int _istore = 54;
  public static final int _lstore = 55;
  public static final int _fstore = 56;
  public static final int _dstore = 57;
  public static final int _astore = 58;
  public static final int _istore_0 = 59;
  public static final int _istore_1 = 60;
  public static final int _istore_2 = 61;
  public static final int _istore_3 = 62;
  public static final int _lstore_0 = 63;
  public static final int _lstore_1 = 64;
  public static final int _lstore_2 = 65;
  public static final int _lstore_3 = 66;
  public static final int _fstore_0 = 67;
  public static final int _fstore_1 = 68;
  public static final int _fstore_2 = 69;
  public static final int _fstore_3 = 70;
  public static final int _dstore_0 = 71;
  public static final int _dstore_1 = 72;
  public static final int _dstore_2 = 73;
  public static final int _dstore_3 = 74;
  public static final int _astore_0 = 75;
  public static final int _astore_1 = 76;
  public static final int _astore_2 = 77;
  public static final int _astore_3 = 78;
  public static final int _iastore = 79;
  public static final int _lastore = 80;
  public static final int _fastore = 81;
  public static final int _dastore = 82;
  public static final int _aastore = 83;
  public static final int _bastore = 84;
  public static final int _castore = 85;
  public static final int _sastore = 86;
  public static final int _pop = 87;
  public static final int _pop2 = 88;
  public static final int _dup = 89;
  public static final int _dup_x1 = 90;
  public static final int _dup_x2 = 91;
  public static final int _dup2 = 92;
  public static final int _dup2_x1 = 93;
  public static final int _dup2_x2 = 94;
  public static final int _swap = 95;
  public static final int _iadd = 96;
  public static final int _ladd = 97;
  public static final int _fadd = 98;
  public static final int _dadd = 99;
  public static final int _isub = 100;
  public static final int _lsub = 101;
  public static final int _fsub = 102;
  public static final int _dsub = 103;
  public static final int _imul = 104;
  public static final int _lmul = 105;
  public static final int _fmul = 106;
  public static final int _dmul = 107;
  public static final int _idiv = 108;
  public static final int _ldiv = 109;
  public static final int _fdiv = 110;
  public static final int _ddiv = 111;
  public static final int _irem = 112;
  public static final int _lrem = 113;
  public static final int _frem = 114;
  public static final int _drem = 115;
  public static final int _ineg = 116;
  public static final int _lneg = 117;
  public static final int _fneg = 118;
  public static final int _dneg = 119;
  public static final int _ishl = 120;
  public static final int _lshl = 121;
  public static final int _ishr = 122;
  public static final int _lshr = 123;
  public static final int _iushr = 124;
  public static final int _lushr = 125;
  public static final int _iand = 126;
  public static final int _land = 127;
  public static final int _ior = 128;
  public static final int _lor = 129;
  public static final int _ixor = 130;
  public static final int _lxor = 131;
  public static final int _iinc = 132;
  public static final int _i2l = 133;
  public static final int _i2f = 134;
  public static final int _i2d = 135;
  public static final int _l2i = 136;
  public static final int _l2f = 137;
  public static final int _l2d = 138;
  public static final int _f2i = 139;
  public static final int _f2l = 140;
  public static final int _f2d = 141;
  public static final int _d2i = 142;
  public static final int _d2l = 143;
  public static final int _d2f = 144;
  public static final int _i2b = 145;
  public static final int _i2c = 146;
  public static final int _i2s = 147;
  public static final int _lcmp = 148;
  public static final int _fcmpl = 149;
  public static final int _fcmpg = 150;
  public static final int _dcmpl = 151;
  public static final int _dcmpg = 152;
  public static final int _ifeq = 153;
  public static final int _ifne = 154;
  public static final int _iflt = 155;
  public static final int _ifge = 156;
  public static final int _ifgt = 157;
  public static final int _ifle = 158;
  public static final int _if_icmpeq = 159;
  public static final int _if_icmpne = 160;
  public static final int _if_icmplt = 161;
  public static final int _if_icmpge = 162;
  public static final int _if_icmpgt = 163;
  public static final int _if_icmple = 164;
  public static final int _if_acmpeq = 165;
  public static final int _if_acmpne = 166;
  public static final int _goto = 167;
  public static final int _jsr = 168;
  public static final int _ret = 169;
  public static final int _tableswitch = 170;
  public static final int _lookupswitch = 171;
  public static final int _ireturn = 172;
  public static final int _lreturn = 173;
  public static final int _freturn = 174;
  public static final int _dreturn = 175;
  public static final int _areturn = 176;
  public static final int _return = 177;
  public static final int _getstatic = 178;
  public static final int _putstatic = 179;
  public static final int _getfield = 180;
  public static final int _putfield = 181;
  public static final int _invokevirtual = 182;
  public static final int _invokespecial = 183;
  public static final int _invokestatic = 184;
  public static final int _invokeinterface = 185;
  public static final int _unused = 186;
  public static final int _new = 187;
  public static final int _newarray = 188;
  public static final int _anewarray = 189;
  public static final int _arraylength = 190;
  public static final int _athrow = 191;
  public static final int _checkcast = 192;
  public static final int _instanceof = 193;
  public static final int _monitorenter = 194;
  public static final int _monitorexit = 195;
  public static final int _wide = 196;
  public static final int _multianewarray = 197;
  public static final int _ifnull = 198;
  public static final int _ifnonnull = 199;
  public static final int _goto_w = 200;
  public static final int _jsr_w = 201;
  public static final int _breakpoint = 202;
  public static final int _impdep1 = 254;
  public static final int _impdep2 = 255;
  public static final String[] MNEMONICS = { "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1", "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0", "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0", "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload", "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2", "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0", "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2", "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload", "laload", "faload", "daload", "aaload", "baload", "caload", "saload", "istore", "lstore", "fstore", "dstore", "astore", "istore_0", "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1", "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2", "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3", "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore", "fastore", "dastore", "aastore", "bastore", "castore", "sastore", "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1", "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub", "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv", "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg", "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr", "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f", "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f", "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg", "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle", "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt", "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret", "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn", "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield", "putfield", "invokevirtual", "invokespecial", "invokestatic", "invokeinterface", "unused", "new", "newarray", "anewarray", "arraylength", "athrow", "checkcast", "instanceof", "monitorenter", "monitorexit", "[wide]", "multianewarray", "ifnull", "ifnonnull", "goto_w", "jsr_w" };
  public static final boolean[] CONDITIONAL_BRANCHES = clinit._CONDITIONAL_BRANCHES;
  public static final boolean[] COMPOUND_CONDITIONAL_BRANCHES = clinit._COMPOUND_CONDITIONAL_BRANCHES;
  public static final boolean[] UNCONDITIONAL_BRANCHES = clinit._UNCONDITIONAL_BRANCHES;
  public static final boolean[] BRANCHES = clinit._BRANCHES;
  public static final int[] NARROW_SIZE = clinit._NARROW_SIZE;
  public static final int[] WIDE_SIZE = clinit._WIDE_SIZE;
  
  public static final class clinit
  {
    static final boolean[] _CONDITIONAL_BRANCHES;
    static final boolean[] _COMPOUND_CONDITIONAL_BRANCHES;
    static final boolean[] _UNCONDITIONAL_BRANCHES;
    static final boolean[] _BRANCHES;
    static final int[] _NARROW_SIZE;
    static final int[] _WIDE_SIZE;
    
    static
    {
      int i = IOpcodes.MNEMONICS.length;
      
      _CONDITIONAL_BRANCHES = new boolean[i];
      
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['?'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      _CONDITIONAL_BRANCHES['�'] = true;
      
      _COMPOUND_CONDITIONAL_BRANCHES = new boolean[i];
      
      _COMPOUND_CONDITIONAL_BRANCHES['�'] = true;
      _COMPOUND_CONDITIONAL_BRANCHES['�'] = true;
      
      _UNCONDITIONAL_BRANCHES = new boolean[i];
      
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      _UNCONDITIONAL_BRANCHES['�'] = true;
      
      _UNCONDITIONAL_BRANCHES['�'] = true;
      
      _BRANCHES = new boolean[i];
      for (int j = 0; j < i; j++) {
        if (_CONDITIONAL_BRANCHES[j] != 0) {
          _BRANCHES[j] = true;
        }
      }
      for (j = 0; j < i; j++) {
        if (_COMPOUND_CONDITIONAL_BRANCHES[j] != 0) {
          _BRANCHES[j] = true;
        }
      }
      for (j = 0; j < i; j++) {
        if (_UNCONDITIONAL_BRANCHES[j] != 0) {
          _BRANCHES[j] = true;
        }
      }
      _NARROW_SIZE = new int[i];
      for (j = 0; j < i; j++) {
        _NARROW_SIZE[j] = 1;
      }
      _NARROW_SIZE[16] = 2;
      _NARROW_SIZE[17] = 3;
      
      _NARROW_SIZE[18] = 2;
      _NARROW_SIZE[19] = 3;
      _NARROW_SIZE[20] = 3;
      
      _NARROW_SIZE[21] = 2;
      _NARROW_SIZE[22] = 2;
      _NARROW_SIZE[23] = 2;
      _NARROW_SIZE[24] = 2;
      _NARROW_SIZE[25] = 2;
      _NARROW_SIZE[54] = 2;
      _NARROW_SIZE[55] = 2;
      _NARROW_SIZE[56] = 2;
      _NARROW_SIZE[57] = 2;
      _NARROW_SIZE[58] = 2;
      
      _NARROW_SIZE['?'] = 3;
      
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['?'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      
      _NARROW_SIZE['�'] = 2;
      
      _NARROW_SIZE['�'] = -1;
      _NARROW_SIZE['�'] = 0;
      
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      
      _NARROW_SIZE['�'] = 5;
      
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 3;
      
      _NARROW_SIZE['�'] = 2;
      _NARROW_SIZE['�'] = 3;
      _NARROW_SIZE['�'] = 4;
      
      _NARROW_SIZE['�'] = 5;
      _NARROW_SIZE['�'] = 5;
      
      _WIDE_SIZE = (int[])_NARROW_SIZE.clone();
      
      _WIDE_SIZE[21] = 3;
      _WIDE_SIZE[22] = 3;
      _WIDE_SIZE[23] = 3;
      _WIDE_SIZE[24] = 3;
      _WIDE_SIZE[25] = 3;
      _WIDE_SIZE[54] = 3;
      _WIDE_SIZE[55] = 3;
      _WIDE_SIZE[56] = 3;
      _WIDE_SIZE[57] = 3;
      _WIDE_SIZE[58] = 3;
      
      _WIDE_SIZE['?'] = 5;
      
      _WIDE_SIZE['�'] = 3;
    }
  }
}

/* Location:
 * Qualified Name:     com.vladium.jcd.opcodes.IOpcodes
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.compiler;

import com.vladium.jcd.lib.UDataOutputStream;
import java.io.IOException;

public abstract interface IClassFormatOutput
{
  public abstract void writeInClassFormat(UDataOutputStream paramUDataOutputStream)
    throws IOException;
}

/* Location:
 * Qualified Name:     com.vladium.jcd.compiler.IClassFormatOutput
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.compiler;

import com.vladium.jcd.cls.ClassDef;
import com.vladium.jcd.lib.UDataOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public abstract class ClassWriter
{
  public static void writeClassTable(ClassDef paramClassDef, OutputStream paramOutputStream)
    throws IOException
  {
    paramClassDef.writeInClassFormat(new UDataOutputStream(paramOutputStream));
  }
}

/* Location:
 * Qualified Name:     com.vladium.jcd.compiler.ClassWriter
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.compiler;

import com.vladium.jcd.cls.ClassDef;
import com.vladium.jcd.cls.IConstantCollection;
import com.vladium.jcd.cls.constant.CONSTANT_Integer_info;
import com.vladium.jcd.opcodes.IOpcodes;
import com.vladium.util.ByteArrayOStream;

public abstract class CodeGen
  implements IOpcodes
{
  public static void load_local_object_var(ByteArrayOStream paramByteArrayOStream, int paramInt)
  {
    if (paramInt <= 3) {
      paramByteArrayOStream.write(42 + paramInt);
    } else if (paramInt <= 255) {
      paramByteArrayOStream.write2(25, paramInt);
    } else {
      paramByteArrayOStream.write4(196, 25, paramInt >>> 8, paramInt);
    }
  }
  
  public static void store_local_object_var(ByteArrayOStream paramByteArrayOStream, int paramInt)
  {
    if (paramInt <= 3) {
      paramByteArrayOStream.write(75 + paramInt);
    } else if (paramInt <= 255) {
      paramByteArrayOStream.write2(58, paramInt);
    } else {
      paramByteArrayOStream.write4(196, 58, paramInt >>> 8, paramInt);
    }
  }
  
  public static void push_int_value(ByteArrayOStream paramByteArrayOStream, ClassDef paramClassDef, int paramInt)
  {
    if ((-1 <= paramInt) && (paramInt <= 5))
    {
      paramByteArrayOStream.write(3 + paramInt);
    }
    else if ((-128 <= paramInt) && (paramInt <= 127))
    {
      paramByteArrayOStream.write2(16, paramInt);
    }
    else if ((32768 <= paramInt) && (paramInt <= 32767))
    {
      paramByteArrayOStream.write3(17, paramInt >>> 8, paramInt);
    }
    else
    {
      int i = paramClassDef.getConstants().add(new CONSTANT_Integer_info(paramInt));
      if (i <= 255) {
        paramByteArrayOStream.write2(18, i);
      } else {
        paramByteArrayOStream.write3(19, i >>> 8, i);
      }
    }
  }
  
  public static void push_constant_index(ByteArrayOStream paramByteArrayOStream, int paramInt)
  {
    if (paramInt <= 255) {
      paramByteArrayOStream.write2(18, paramInt);
    } else {
      paramByteArrayOStream.write3(19, paramInt >>> 8, paramInt);
    }
  }
}

/* Location:
 * Qualified Name:     com.vladium.jcd.compiler.CodeGen
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.cls;

import com.vladium.jcd.cls.attribute.AttributeElementFactory;
import com.vladium.jcd.cls.attribute.CodeAttribute_info;
import com.vladium.jcd.cls.attribute.InnerClassesAttribute_info;
import com.vladium.jcd.cls.constant.CONSTANT_Class_info;
import com.vladium.jcd.cls.constant.CONSTANT_Fieldref_info;
import com.vladium.jcd.cls.constant.CONSTANT_NameAndType_info;
import com.vladium.jcd.cls.constant.CONSTANT_String_info;
import com.vladium.jcd.cls.constant.CONSTANT_Utf8_info;
import com.vladium.jcd.compiler.IClassFormatOutput;
import com.vladium.jcd.lib.Types;
import com.vladium.jcd.lib.UDataOutputStream;
import com.vladium.util.ByteArrayOStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;

public final class ClassDef
  implements Cloneable, IAccessFlags, IClassFormatOutput
{
  private long m_magic;
  private int[] m_version;
  private int m_access_flags;
  private int m_this_class_index;
  private int m_super_class_index;
  private IConstantCollection m_constants;
  private IInterfaceCollection m_interfaces;
  private IFieldCollection m_fields;
  private IMethodCollection m_methods;
  private IAttributeCollection m_attributes;
  private long m_declaredSUID;
  private static final boolean DEBUG_SUID = false;
  
  public ClassDef()
  {
    m_version = new int[2];
    
    m_constants = ElementFactory.newConstantCollection(-1);
    m_interfaces = ElementFactory.newInterfaceCollection(-1);
    m_fields = ElementFactory.newFieldCollection(-1);
    m_methods = ElementFactory.newMethodCollection(-1);
    m_attributes = ElementFactory.newAttributeCollection(-1);
  }
  
  public void accept(IClassDefVisitor paramIClassDefVisitor, Object paramObject)
  {
    paramIClassDefVisitor.visit(this, paramObject);
  }
  
  public long getMagic()
  {
    return m_magic;
  }
  
  public void setMagic(long paramLong)
  {
    m_magic = paramLong;
  }
  
  public int[] getVersion()
  {
    return m_version;
  }
  
  public void setVersion(int[] paramArrayOfInt)
  {
    m_version[0] = paramArrayOfInt[0];
    m_version[1] = paramArrayOfInt[1];
  }
  
  public final void setDeclaredSUID(long paramLong)
  {
    m_declaredSUID = paramLong;
  }
  
  public int getThisClassIndex()
  {
    return m_this_class_index;
  }
  
  public void setThisClassIndex(int paramInt)
  {
    m_this_class_index = paramInt;
  }
  
  public CONSTANT_Class_info getThisClass()
  {
    return (CONSTANT_Class_info)m_constants.get(m_this_class_index);
  }
  
  public CONSTANT_Class_info getSuperClass()
  {
    return (CONSTANT_Class_info)m_constants.get(m_super_class_index);
  }
  
  public String getName()
  {
    return getThisClass().getName(this);
  }
  
  public int getSuperClassIndex()
  {
    return m_super_class_index;
  }
  
  public void setSuperClassIndex(int paramInt)
  {
    m_super_class_index = paramInt;
  }
  
  public final int getAccessFlags()
  {
    return m_access_flags;
  }
  
  public final void setAccessFlags(int paramInt)
  {
    m_access_flags = paramInt;
  }
  
  public boolean isInterface()
  {
    return (m_access_flags & 0x200) != 0;
  }
  
  public boolean isSynthetic()
  {
    return m_attributes.hasSynthetic();
  }
  
  public boolean isNested(int[] paramArrayOfInt)
  {
    InnerClassesAttribute_info localInnerClassesAttribute_info = m_attributes.getInnerClassesAttribute();
    if (localInnerClassesAttribute_info == null) {
      return false;
    }
    return localInnerClassesAttribute_info.makesClassNested(m_this_class_index, paramArrayOfInt);
  }
  
  public IConstantCollection getConstants()
  {
    return m_constants;
  }
  
  public IInterfaceCollection getInterfaces()
  {
    return m_interfaces;
  }
  
  public IFieldCollection getFields()
  {
    return m_fields;
  }
  
  public IMethodCollection getMethods()
  {
    return m_methods;
  }
  
  public IAttributeCollection getAttributes()
  {
    return m_attributes;
  }
  
  public int[] getFields(String paramString)
  {
    return m_fields.get(this, paramString);
  }
  
  public int[] getMethods(String paramString)
  {
    return m_methods.get(this, paramString);
  }
  
  public Object clone()
  {
    try
    {
      ClassDef localClassDef = (ClassDef)super.clone();
      
      m_version = ((int[])m_version.clone());
      m_constants = ((IConstantCollection)m_constants.clone());
      m_interfaces = ((IInterfaceCollection)m_interfaces.clone());
      m_fields = ((IFieldCollection)m_fields.clone());
      m_methods = ((IMethodCollection)m_methods.clone());
      m_attributes = ((IAttributeCollection)m_attributes.clone());
      
      return localClassDef;
    }
    catch (CloneNotSupportedException localCloneNotSupportedException)
    {
      throw new InternalError(localCloneNotSupportedException.toString());
    }
  }
  
  public void writeInClassFormat(UDataOutputStream paramUDataOutputStream)
    throws IOException
  {
    if (paramUDataOutputStream == null) {
      throw new IllegalArgumentException("null input: out");
    }
    paramUDataOutputStream.writeU4(m_magic);
    
    paramUDataOutputStream.writeU2(m_version[1]);
    paramUDataOutputStream.writeU2(m_version[0]);
    
    m_constants.writeInClassFormat(paramUDataOutputStream);
    
    paramUDataOutputStream.writeU2(m_access_flags);
    
    paramUDataOutputStream.writeU2(m_this_class_index);
    paramUDataOutputStream.writeU2(m_super_class_index);
    
    m_interfaces.writeInClassFormat(paramUDataOutputStream);
    m_fields.writeInClassFormat(paramUDataOutputStream);
    m_methods.writeInClassFormat(paramUDataOutputStream);
    m_attributes.writeInClassFormat(paramUDataOutputStream);
  }
  
  public final long getDeclaredSUID()
  {
    return m_declaredSUID;
  }
  
  public final long computeSUID(boolean paramBoolean)
  {
    long l = m_declaredSUID;
    if (l != 0L) {
      return l;
    }
    try
    {
      ByteArrayOStream localByteArrayOStream = new ByteArrayOStream(1024);
      DataOutputStream localDataOutputStream = new DataOutputStream(localByteArrayOStream);
      
      localDataOutputStream.writeUTF(Types.vmNameToJavaName(getName()));
      
      Object localObject1 = new int[1];
      
      int i = (isNested((int[])localObject1) ? localObject1[0] : getAccessFlags()) & 0x611;
      
      localDataOutputStream.writeInt(i);
      
      localObject1 = getInterfaces();
      Object localObject2 = new String[((IInterfaceCollection)localObject1).size()];
      
      int k = localObject2.length;
      for (int n = 0; n < k; n++) {
        localObject2[n] = Types.vmNameToJavaName(((CONSTANT_Class_info)m_constants.get(((IInterfaceCollection)localObject1).get(n))).getName(this));
      }
      Arrays.sort((Object[])localObject2);
      for (n = 0; n < k; n++) {
        localDataOutputStream.writeUTF(localObject2[n]);
      }
      localObject1 = getFields();
      localObject2 = new FieldDescriptor[((IFieldCollection)localObject1).size()];
      
      k = 0;
      n = 0;
      for (int i1 = localObject2.length; n < i1; n++)
      {
        Field_info localField_info = ((IFieldCollection)localObject1).get(n);
        i4 = localField_info.getAccessFlags();
        if (((i4 & 0x2) == 0) || ((i4 & 0x88) == 0)) {
          localObject2[(k++)] = new FieldDescriptor(localField_info.getName(this), i4, localField_info.getDescriptor(this));
        }
      }
      if (k > 0)
      {
        Arrays.sort((Object[])localObject2, 0, k);
        for (n = 0; n < k; n++)
        {
          Object localObject3 = localObject2[n];
          
          localDataOutputStream.writeUTF(m_name);
          localDataOutputStream.writeInt(m_modifiers);
          localDataOutputStream.writeUTF(m_descriptor);
        }
      }
      localObject1 = getMethods();
      
      int j = 0;
      ConstructorDescriptor[] arrayOfConstructorDescriptor = new ConstructorDescriptor[((IMethodCollection)localObject1).size()];
      MethodDescriptor[] arrayOfMethodDescriptor = new MethodDescriptor[arrayOfConstructorDescriptor.length];
      
      int i2 = 0;int i3 = 0;
      
      int i4 = 0;
      for (int i5 = arrayOfConstructorDescriptor.length; i4 < i5; i4++)
      {
        Method_info localMethod_info = ((IMethodCollection)localObject1).get(i4);
        
        String str = localMethod_info.getName(this);
        if ((j == 0) && ("<clinit>".equals(str)))
        {
          j = 1;
        }
        else
        {
          int i6 = localMethod_info.getAccessFlags();
          if ((i6 & 0x2) == 0) {
            if ("<init>".equals(str)) {
              arrayOfConstructorDescriptor[(i2++)] = new ConstructorDescriptor(i6, localMethod_info.getDescriptor(this));
            } else {
              arrayOfMethodDescriptor[(i3++)] = new MethodDescriptor(str, i6, localMethod_info.getDescriptor(this));
            }
          }
        }
      }
      if ((j != 0) && (!paramBoolean))
      {
        localDataOutputStream.writeUTF("<clinit>");
        localDataOutputStream.writeInt(8);
        localDataOutputStream.writeUTF("()V");
      }
      Object localObject4;
      if (i2 > 0)
      {
        Arrays.sort(arrayOfConstructorDescriptor, 0, i2);
        for (i4 = 0; i4 < i2; i4++)
        {
          localObject4 = arrayOfConstructorDescriptor[i4];
          
          localDataOutputStream.writeUTF("<init>");
          localDataOutputStream.writeInt(m_modifiers);
          localDataOutputStream.writeUTF(m_descriptor.replace('/', '.'));
        }
      }
      if (i3 > 0)
      {
        Arrays.sort(arrayOfMethodDescriptor, 0, i3);
        for (i4 = 0; i4 < i3; i4++)
        {
          localObject4 = arrayOfMethodDescriptor[i4];
          
          localDataOutputStream.writeUTF(m_name);
          localDataOutputStream.writeInt(m_modifiers);
          localDataOutputStream.writeUTF(m_descriptor.replace('/', '.'));
        }
      }
      localDataOutputStream.flush();
      
      localObject1 = MessageDigest.getInstance("SHA");
      
      ((MessageDigest)localObject1).update(localByteArrayOStream.getByteArray(), 0, localByteArrayOStream.size());
      byte[] arrayOfByte = ((MessageDigest)localObject1).digest();
      for (int m = Math.min(arrayOfByte.length, 8) - 1; m >= 0; m--) {
        l = l << 8 | arrayOfByte[m] & 0xFF;
      }
      return l;
    }
    catch (IOException localIOException)
    {
      throw new Error(localIOException.getMessage());
    }
    catch (NoSuchAlgorithmException localNoSuchAlgorithmException)
    {
      throw new SecurityException(localNoSuchAlgorithmException.getMessage());
    }
  }
  
  public int addCONSTANT_Utf8(String paramString, boolean paramBoolean)
  {
    if (paramBoolean)
    {
      int i = m_constants.findCONSTANT_Utf8(paramString);
      if (i > 0) {
        return i;
      }
    }
    return m_constants.add(new CONSTANT_Utf8_info(paramString));
  }
  
  public int addStringConstant(String paramString)
  {
    int i = addCONSTANT_Utf8(paramString, true);
    
    return m_constants.add(new CONSTANT_String_info(i));
  }
  
  public int addNameType(String paramString1, String paramString2)
  {
    int i = addCONSTANT_Utf8(paramString1, true);
    int j = addCONSTANT_Utf8(paramString2, true);
    
    return m_constants.add(new CONSTANT_NameAndType_info(i, j));
  }
  
  public int addClassref(String paramString)
  {
    int i = addCONSTANT_Utf8(paramString, true);
    
    return m_constants.add(new CONSTANT_Class_info(i));
  }
  
  public int addField(String paramString1, String paramString2, int paramInt)
  {
    int i = addCONSTANT_Utf8(paramString1, true);
    int j = addCONSTANT_Utf8(paramString2, true);
    
    Field_info localField_info = new Field_info(paramInt, i, j, ElementFactory.newAttributeCollection(0));
    
    return m_fields.add(localField_info);
  }
  
  public int addField(String paramString1, String paramString2, int paramInt, IAttributeCollection paramIAttributeCollection)
  {
    int i = addCONSTANT_Utf8(paramString1, true);
    int j = addCONSTANT_Utf8(paramString2, true);
    
    Field_info localField_info = new Field_info(paramInt, i, j, paramIAttributeCollection);
    
    return m_fields.add(localField_info);
  }
  
  public Method_info newEmptyMethod(String paramString1, String paramString2, int paramInt)
  {
    int i = addCONSTANT_Utf8("Code", true);
    int j = addCONSTANT_Utf8(paramString1, true);
    int k = addCONSTANT_Utf8(paramString2, true);
    
    IAttributeCollection localIAttributeCollection = ElementFactory.newAttributeCollection(0);
    CodeAttribute_info localCodeAttribute_info = new CodeAttribute_info(i, 0, 0, CodeAttribute_info.EMPTY_BYTE_ARRAY, AttributeElementFactory.newExceptionHandlerTable(0), ElementFactory.newAttributeCollection(0));
    
    localIAttributeCollection.add(localCodeAttribute_info);
    
    Method_info localMethod_info = new Method_info(paramInt, j, k, localIAttributeCollection);
    
    return localMethod_info;
  }
  
  public int addMethod(Method_info paramMethod_info)
  {
    return m_methods.add(paramMethod_info);
  }
  
  public int addFieldref(Field_info paramField_info)
  {
    CONSTANT_NameAndType_info localCONSTANT_NameAndType_info = new CONSTANT_NameAndType_info(m_name_index, m_descriptor_index);
    int i = m_constants.add(localCONSTANT_NameAndType_info);
    
    return m_constants.add(new CONSTANT_Fieldref_info(m_this_class_index, i));
  }
  
  public int addFieldref(int paramInt)
  {
    Field_info localField_info = m_fields.get(paramInt);
    
    CONSTANT_NameAndType_info localCONSTANT_NameAndType_info = new CONSTANT_NameAndType_info(m_name_index, m_descriptor_index);
    int i = m_constants.add(localCONSTANT_NameAndType_info);
    
    return m_constants.add(new CONSTANT_Fieldref_info(m_this_class_index, i));
  }
  
  private static final class FieldDescriptor
    implements Comparable
  {
    final String m_name;
    final int m_modifiers;
    final String m_descriptor;
    
    public final int compareTo(Object paramObject)
    {
      return m_name.compareTo(m_name);
    }
    
    FieldDescriptor(String paramString1, int paramInt, String paramString2)
    {
      m_name = paramString1;
      m_modifiers = paramInt;
      m_descriptor = paramString2;
    }
  }
  
  private static final class ConstructorDescriptor
    implements Comparable
  {
    final int m_modifiers;
    final String m_descriptor;
    
    public final int compareTo(Object paramObject)
    {
      return m_descriptor.compareTo(m_descriptor);
    }
    
    ConstructorDescriptor(int paramInt, String paramString)
    {
      m_modifiers = paramInt;
      m_descriptor = paramString;
    }
  }
  
  private static final class MethodDescriptor
    implements Comparable
  {
    final String m_name;
    final int m_modifiers;
    final String m_descriptor;
    
    public final int compareTo(Object paramObject)
    {
      MethodDescriptor localMethodDescriptor = (MethodDescriptor)paramObject;
      
      int i = m_name.compareTo(m_name);
      if (i == 0) {
        i = m_descriptor.compareTo(m_descriptor);
      }
      return i;
    }
    
    MethodDescriptor(String paramString1, int paramInt, String paramString2)
    {
      m_name = paramString1;
      m_modifiers = paramInt;
      m_descriptor = paramString2;
    }
  }
}

/* Location:
 * Qualified Name:     com.vladium.jcd.cls.ClassDef
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.cls;

public abstract interface IClassDefConstants
{
  public static final String INIT_NAME = "<init>";
  public static final String CLINIT_NAME = "<clinit>";
  public static final String CLINIT_DESCRIPTOR = "()V";
}

/* Location:
 * Qualified Name:     com.vladium.jcd.cls.IClassDefConstants
 * Java Class Version: 5 (49.0)
 * JD-Core Version:    0.7.1
 */
package com.vladium.jcd.cls;

import com.vladium.jcd.cls.attribute.Attribute_info;
import com.vladium.jcd.cls.constant.CONSTANT_Utf8_info;
import com.vladium.jcd.lib.UDataInputStream;
import com.vladium.jcd.lib.UDataOutputStream;
import java.io.IOException;

public final class Method_info
  implements Cloneable, IAccessFlags
{
  public int m_name_index;
  public int m_descriptor_index;
  priv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

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