radare2/shlr/java/ops.c

306 lines
18 KiB
C

/* radare - LGPL - Copyright 2007-2018 - pancake */
#include <stdio.h>
#include "code.h"
#include "ops.h"
R_IPI struct java_op JAVA_OPS[JAVA_OPS_COUNT] = {
{ "nop" , 0x00, 1, R_ANAL_JAVA_NOP },
{ "aconst_null" , 0x01, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_REF_TO_STACK },
{ "iconst_m1" , 0x02, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_0" , 0x03, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_1" , 0x04, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_2" , 0x05, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_3" , 0x06, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_4" , 0x07, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "iconst_5" , 0x08, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "lconst_0" , 0x09, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "lconst_1" , 0x0a, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "fconst_0" , 0x0b, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "fconst_1" , 0x0c, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "fconst_2" , 0x0d, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "dconst_0" , 0x0e, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "dconst_1" , 0x0f, 1, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_TO_STACK },
{ "bipush" , 0x10, 2, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH },
{ "sipush" , 0x11, 3, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH },
{ "ldc" , 0x12, 2, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_INDIRECT_TO_STACK },
{ "ldc_w" , 0x13, 3, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_INDIRECT_TO_STACK },
{ "ldc2_w" , 0x14, 3, R_ANAL_JAVA_LDST_LOAD_FROM_CONST_INDIRECT_TO_STACK },
{ "iload" , 0x15, 2, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_INDIRECT_TO_STACK },
{ "lload" , 0x16, 2, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_INDIRECT_TO_STACK },
{ "fload" , 0x17, 2, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_INDIRECT_TO_STACK },
{ "dload" , 0x18, 2, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_INDIRECT_TO_STACK },
{ "aload" , 0x19, 2, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_INDIRECT_TO_STACK_REF },
{ "iload_0" , 0x1a, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "iload_1" , 0x1b, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "iload_2" , 0x1c, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "iload_3" , 0x1d, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "lload_0" , 0x1e, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "lload_1" , 0x1f, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "lload_2" , 0x20, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "lload_3" , 0x21, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "fload_0" , 0x22, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "fload_1" , 0x23, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "fload_2" , 0x24, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "fload_3" , 0x25, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "dload_0" , 0x26, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "dload_1" , 0x27, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "dload_2" , 0x28, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "dload_3" , 0x29, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK },
{ "aload_0" , 0x2a, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK_REF },
{ "aload_1" , 0x2b, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK_REF },
{ "aload_2" , 0x2c, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK_REF },
{ "aload_3" , 0x2d, 1, R_ANAL_JAVA_LDST_LOAD_FROM_VAR_TO_STACK_REF },
{ "iaload" , 0x2e, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "laload" , 0x2f, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "faload" , 0x30, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "daload" , 0x31, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "aaload" , 0x32, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK_REF },
{ "baload" , 0x33, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "caload" , 0x34, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "saload" , 0x35, 1, R_ANAL_JAVA_LDST_LOAD_FROM_REF_INDIRECT_TO_STACK },
{ "istore" , 0x36, 2, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_VAR },
{ "lstore" , 0x37, 2, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_VAR },
{ "fstore" , 0x38, 2, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_VAR },
{ "dstore" , 0x39, 2, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_VAR },
{ "astore" , 0x3a, 2, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_VAR_REF },
{ "istore_0" , 0x3b, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "istore_1" , 0x3c, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "istore_2" , 0x3d, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "istore_3" , 0x3e, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "lstore_0" , 0x3f, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "lstore_1" , 0x40, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "lstore_2" , 0x41, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "lstore_3" , 0x42, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "fstore_0" , 0x43, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "fstore_1" , 0x44, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "fstore_2" , 0x45, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "fstore_3" , 0x46, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "dstore_0" , 0x47, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "dstore_1" , 0x48, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "dstore_2" , 0x49, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "dstore_3" , 0x4a, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR },
{ "astore_0" , 0x4b, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR_REF },
{ "astore_1" , 0x4c, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR_REF },
{ "astore_2" , 0x4d, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR_REF },
{ "astore_3" , 0x4e, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_TO_VAR_REF },
{ "iastore" , 0x4f, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "lastore" , 0x50, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "fastore" , 0x51, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "dastore" , 0x52, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "aastore" , 0x53, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF_REF },
{ "bastore" , 0x54, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "castore" , 0x55, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "sastore" , 0x56, 1, R_ANAL_JAVA_LDST_STORE_FROM_STACK_INDIRECT_TO_REF },
{ "pop" , 0x57, 1, R_ANAL_JAVA_STORE_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_POP },
{ "pop2" , 0x58, 1, R_ANAL_JAVA_STORE_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_POP | R_ANAL_JAVA_REP_OP },
{ "dup" , 0x59, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "dup_x1" , 0x5a, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "dup_x2" , 0x5b, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "dup2" , 0x5c, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "dup2_x1" , 0x5d, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "dup2_x2" , 0x5e, 1, R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_STACK_OP | R_ANAL_JAVA_LDST_OP_PUSH | R_ANAL_JAVA_REP_OP },
{ "swap" , 0x5f, 1, R_ANAL_JAVA_BINOP_XCHG },
{ "iadd" , 0x60, 1, R_ANAL_JAVA_BINOP_ADD },
{ "ladd" , 0x61, 1, R_ANAL_JAVA_BINOP_ADD },
{ "fadd" , 0x62, 1, R_ANAL_JAVA_BINOP_ADD },
{ "dadd" , 0x63, 1, R_ANAL_JAVA_BINOP_ADD },
{ "isub" , 0x64, 1, R_ANAL_JAVA_BINOP_SUB },
{ "lsub" , 0x65, 1, R_ANAL_JAVA_BINOP_SUB },
{ "fsub" , 0x66, 1, R_ANAL_JAVA_BINOP_SUB },
{ "dsub" , 0x67, 1, R_ANAL_JAVA_BINOP_SUB },
{ "imul" , 0x68, 1, R_ANAL_JAVA_BINOP_MUL },
{ "lmul" , 0x69, 1, R_ANAL_JAVA_BINOP_MUL },
{ "fmul" , 0x6a, 1, R_ANAL_JAVA_BINOP_MUL },
{ "dmul" , 0x6b, 1, R_ANAL_JAVA_BINOP_MUL },
{ "idiv" , 0x6c, 1, R_ANAL_JAVA_BINOP_DIV },
{ "ldiv" , 0x6d, 1, R_ANAL_JAVA_BINOP_DIV },
{ "fdiv" , 0x6e, 1, R_ANAL_JAVA_BINOP_DIV },
{ "ddiv" , 0x6f, 1, R_ANAL_JAVA_BINOP_DIV },
{ "irem" , 0x70, 1, R_ANAL_JAVA_BINOP_MOD },
{ "lrem" , 0x71, 1, R_ANAL_JAVA_BINOP_MOD },
{ "frem" , 0x72, 1, R_ANAL_JAVA_BINOP_MOD },
{ "drem" , 0x73, 1, R_ANAL_JAVA_BINOP_MOD },
{ "ineg" , 0x74, 1, R_ANAL_JAVA_BINOP_NOT },
{ "lneg" , 0x75, 1, R_ANAL_JAVA_BINOP_NOT },
{ "fneg" , 0x76, 1, R_ANAL_JAVA_BINOP_NOT },
{ "dneg" , 0x77, 1, R_ANAL_JAVA_BINOP_NOT },
{ "ishl" , 0x78, 1, R_ANAL_JAVA_BINOP_SHL },
{ "lshl" , 0x79, 1, R_ANAL_JAVA_BINOP_SHL },
{ "ishr" , 0x7a, 1, R_ANAL_JAVA_BINOP_SHR },
{ "lshr" , 0x7b, 1, R_ANAL_JAVA_BINOP_SHR },
{ "iushr" , 0x7c, 1, R_ANAL_JAVA_BINOP_SHR },
{ "lushr" , 0x7d, 1, R_ANAL_JAVA_BINOP_SHR },
{ "iand" , 0x7e, 1, R_ANAL_JAVA_BINOP_AND },
{ "land" , 0x7f, 1, R_ANAL_JAVA_BINOP_AND },
{ "ior" , 0x80, 1, R_ANAL_JAVA_BINOP_OR },
{ "lor" , 0x81, 1, R_ANAL_JAVA_BINOP_OR },
{ "ixor" , 0x82, 1, R_ANAL_JAVA_BINOP_XOR },
{ "lxor" , 0x83, 1, R_ANAL_JAVA_BINOP_XOR },
{ "iinc" , 0x84, 3, R_ANAL_JAVA_BINOP_ADD },
{ "i2l" , 0x85, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "i2f" , 0x86, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "i2d" , 0x87, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "l2i" , 0x88, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "l2f" , 0x89, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "l2d" , 0x8a, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "f2i" , 0x8b, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "f2l" , 0x8c, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "f2d" , 0x8d, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "d2i" , 0x8e, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "d2l" , 0x8f, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "d2f" , 0x90, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "i2b" , 0x91, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "i2c" , 0x92, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "i2s" , 0x93, 1, R_ANAL_JAVA_OBJOP_CAST | R_ANAL_JAVA_OBJ_OP },
{ "lcmp" , 0x94, 1, R_ANAL_JAVA_BINOP_CMP },
{ "fcmpl" , 0x95, 1, R_ANAL_JAVA_BINOP_CMP },
{ "fcmpg" , 0x96, 1, R_ANAL_JAVA_BINOP_CMP },
{ "dcmpl" , 0x97, 1, R_ANAL_JAVA_BINOP_CMP },
{ "dcmpg" , 0x98, 1, R_ANAL_JAVA_BINOP_CMP },
{ "ifeq" , 0x99, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_EQ },
{ "ifne" , 0x9a, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_NE },
{ "iflt" , 0x9b, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_LT },
{ "ifge" , 0x9c, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_GE },
{ "ifgt" , 0x9d, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_GT },
{ "ifle" , 0x9e, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_LE },
{ "if_icmpeq" , 0x9f, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_EQ },
{ "if_icmpne" , 0xa0, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_NE },
{ "if_icmplt" , 0xa1, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_LT },
{ "if_icmpge" , 0xa2, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_GE },
{ "if_icmpgt" , 0xa3, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_GT },
{ "if_icmple" , 0xa4, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_LE },
{ "if_acmpeq" , 0xa5, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_EQ },
{ "if_acmpne" , 0xa6, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_NE },
{ "goto" , 0xa7, 3, R_ANAL_JAVA_CODEOP_JMP },
{ "jsr" , 0xa8, 3, R_ANAL_JAVA_CODEOP_CALL },
{ "ret" , 0xa9, 2, R_ANAL_JAVA_CODEOP_RET },
{ "tableswitch" , 0xaa, 1, R_ANAL_JAVA_CODEOP_SWITCH },
{ "lookupswitch" , 0xab, 1, R_ANAL_JAVA_CODEOP_SWITCH },
{ "ireturn" , 0xac, 1, R_ANAL_JAVA_CODEOP_RET | R_ANAL_JAVA_RET_TYPE_PRIM },
{ "lreturn" , 0xad, 1, R_ANAL_JAVA_CODEOP_RET | R_ANAL_JAVA_RET_TYPE_PRIM },
{ "freturn" , 0xae, 1, R_ANAL_JAVA_CODEOP_RET | R_ANAL_JAVA_RET_TYPE_PRIM },
{ "dreturn" , 0xaf, 1, R_ANAL_JAVA_CODEOP_RET | R_ANAL_JAVA_RET_TYPE_PRIM },
{ "areturn" , 0xb0, 1, R_ANAL_JAVA_CODEOP_RET | R_ANAL_JAVA_RET_TYPE_REF },
{ "return" , 0xb1, 1, R_ANAL_JAVA_CODEOP_RET },
{ "getstatic" , 0xb2, 3, R_ANAL_JAVA_LDST_LOAD_GET_STATIC },
{ "putstatic" , 0xb3, 3, R_ANAL_JAVA_LDST_STORE_PUT_STATIC },
{ "getfield" , 0xb4, 3, R_ANAL_JAVA_LDST_LOAD_GET_FIELD },
{ "putfield" , 0xb5, 3, R_ANAL_JAVA_LDST_STORE_PUT_FIELD },
{ "invokevirtual" , 0xb6, 3, R_ANAL_JAVA_CODEOP_CALL },
{ "invokespecial" , 0xb7, 3, R_ANAL_JAVA_CODEOP_CALL },
{ "invokestatic" , 0xb8, 3, R_ANAL_JAVA_CODEOP_CALL },
{ "invokeinterface", 0xb9, 5, R_ANAL_JAVA_CODEOP_CALL },
{ "invokedynamic" , 0xba, 5, R_ANAL_JAVA_CODEOP_CALL },
{ "new" , 0xbb, 3, R_ANAL_JAVA_OBJOP_NEW },
{ "newarray" , 0xbc, 2, R_ANAL_JAVA_OBJOP_NEW },
{ "anewarray" , 0xbd, 3, R_ANAL_JAVA_OBJOP_NEW },
{ "arraylength" , 0xbe, 1, R_ANAL_JAVA_OBJOP_SIZE },
{ "athrow" , 0xbf, 1, R_ANAL_JAVA_CODEOP_TRAP },
{ "checkcast" , 0xc0, 3, R_ANAL_JAVA_CODEOP_CALL | R_ANAL_JAVA_OBJOP_CHECK | R_ANAL_JAVA_OBJOP_CAST },
{ "instanceof" , 0xc1, 3, R_ANAL_JAVA_CODEOP_CALL | R_ANAL_JAVA_OBJOP_CHECK },
{ "monitorenter" , 0xc2, 1, R_ANAL_JAVA_CODEOP_CALL | R_ANAL_JAVA_LOAD_OP | R_ANAL_JAVA_TYPE_REF },
{ "monitorexit" , 0xc3, 1, R_ANAL_JAVA_CODEOP_CALL | R_ANAL_JAVA_STORE_OP | R_ANAL_JAVA_TYPE_REF },
{ "wide" , 0xc4, 1, R_ANAL_JAVA_REP_OP },
{ "multinewarray" , 0xc5, 4, R_ANAL_JAVA_CODEOP_CALL | R_ANAL_JAVA_OBJOP_NEW | R_ANAL_JAVA_TYPE_REF },
{ "ifnull" , 0xc6, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_NULL | R_ANAL_JAVA_COND_EQ },
{ "ifnonnull" , 0xc7, 3, R_ANAL_JAVA_CODEOP_CJMP | R_ANAL_JAVA_COND_NULL | R_ANAL_JAVA_COND_NE },
{ "goto_w" , 0xc8, 5, R_ANAL_JAVA_CODEOP_JMP },
{ "jsr_w" , 0xc9, 5, R_ANAL_JAVA_CODEOP_JMP | R_ANAL_JAVA_CODEOP_CALL },
{ "breakpoint" , 0xca, 1, R_ANAL_JAVA_CODEOP_SWI },
{ "undefined" , 0xcb, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xcc, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xcd, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xce, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xcf, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd0, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd1, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd2, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd3, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd4, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd5, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd6, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd7, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd8, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xd9, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xda, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xdb, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xdc, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xdd, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xde, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xdf, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe0, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe1, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe2, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe3, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe4, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe5, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe6, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe7, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe8, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xe9, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xea, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xeb, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xec, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xed, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xee, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xef, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf0, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf1, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf2, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf3, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf4, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf5, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf6, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf7, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf8, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xf9, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xfa, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xfb, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xfc, 1, R_ANAL_JAVA_UNK_OP },
{ "undefined" , 0xfd, 1, R_ANAL_JAVA_UNK_OP },
{ "impdep1" , 0xfe, 1, R_ANAL_JAVA_ILL_OP },
{ "impdep2" , 0xff, 1, R_ANAL_JAVA_ILL_OP },
{ NULL, 0, 0, 0 }
};