/* GENERATED BY imacro_asm.js -- DO NOT EDIT!!! */
static struct {
    jsbytecode any_obj[34];
    jsbytecode obj_any[36];
} equality_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 5*/  JSOP_IFPRIMTOP, 0, 16,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*12*/  JSOP_CALL, 0, 1,
/*15*/  JSOP_IFPRIMTOP, 0, 15,
/*18*/  JSOP_GOTO, 0, 4,
/*21*/  JSOP_POP,
/*22*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*25*/  JSOP_CALL, 0, 0,
/*28*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_IMACOP,
/*33*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 6*/  JSOP_IFPRIMTOP, 0, 16,
/* 9*/  JSOP_SWAP,
/*10*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/  JSOP_CALL, 0, 1,
/*16*/  JSOP_IFPRIMTOP, 0, 15,
/*19*/  JSOP_GOTO, 0, 4,
/*22*/  JSOP_POP,
/*23*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*26*/  JSOP_CALL, 0, 0,
/*29*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*31*/  JSOP_SWAP,
/*32*/  JSOP_POP,
/*33*/  JSOP_SWAP,
/*34*/  JSOP_IMACOP,
/*35*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode any_obj[34];
    jsbytecode obj_any[38];
    jsbytecode obj_obj[68];
} binary_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 5*/  JSOP_IFPRIMTOP, 0, 16,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*12*/  JSOP_CALL, 0, 1,
/*15*/  JSOP_IFPRIMTOP, 0, 15,
/*18*/  JSOP_GOTO, 0, 4,
/*21*/  JSOP_POP,
/*22*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*25*/  JSOP_CALL, 0, 0,
/*28*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_IMACOP,
/*33*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 6*/  JSOP_IFPRIMTOP, 0, 18,
/* 9*/  JSOP_SWAP,
/*10*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*13*/  JSOP_CALL, 0, 1,
/*16*/  JSOP_IFPRIMTOP, 0, 17,
/*19*/  JSOP_POP,
/*20*/  JSOP_DUP,
/*21*/  JSOP_GOTO, 0, 4,
/*24*/  JSOP_POP,
/*25*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*28*/  JSOP_CALL, 0, 0,
/*31*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*33*/  JSOP_SWAP,
/*34*/  JSOP_POP,
/*35*/  JSOP_SWAP,
/*36*/  JSOP_IMACOP,
/*37*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 6*/  JSOP_IFPRIMTOP, 0, 16,
/* 9*/  JSOP_SWAP,
/*10*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*13*/  JSOP_CALL, 0, 1,
/*16*/  JSOP_IFPRIMTOP, 0, 15,
/*19*/  JSOP_GOTO, 0, 4,
/*22*/  JSOP_POP,
/*23*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*26*/  JSOP_CALL, 0, 0,
/*29*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*31*/  JSOP_SWAP,
/*32*/  JSOP_POP,
/*33*/  JSOP_SWAP,
/*34*/  JSOP_DUP,
/*35*/  JSOP_DUP,
/*36*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/*39*/  JSOP_IFPRIMTOP, 0, 16,
/*42*/  JSOP_SWAP,
/*43*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*46*/  JSOP_CALL, 0, 1,
/*49*/  JSOP_IFPRIMTOP, 0, 15,
/*52*/  JSOP_GOTO, 0, 4,
/*55*/  JSOP_POP,
/*56*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*59*/  JSOP_CALL, 0, 0,
/*62*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*64*/  JSOP_SWAP,
/*65*/  JSOP_POP,
/*66*/  JSOP_IMACOP,
/*67*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode any_obj[34];
    jsbytecode obj_any[36];
    jsbytecode obj_obj[68];
} add_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 5*/  JSOP_IFPRIMTOP, 0, 16,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*12*/  JSOP_CALL, 0, 1,
/*15*/  JSOP_IFPRIMTOP, 0, 15,
/*18*/  JSOP_GOTO, 0, 4,
/*21*/  JSOP_POP,
/*22*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*25*/  JSOP_CALL, 0, 0,
/*28*/  JSOP_PRIMTOP, (JSTYPE_VOID),
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_ADD,
/*33*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 6*/  JSOP_IFPRIMTOP, 0, 16,
/* 9*/  JSOP_SWAP,
/*10*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/  JSOP_CALL, 0, 1,
/*16*/  JSOP_IFPRIMTOP, 0, 15,
/*19*/  JSOP_GOTO, 0, 4,
/*22*/  JSOP_POP,
/*23*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*26*/  JSOP_CALL, 0, 0,
/*29*/  JSOP_PRIMTOP, (JSTYPE_VOID),
/*31*/  JSOP_SWAP,
/*32*/  JSOP_POP,
/*33*/  JSOP_SWAP,
/*34*/  JSOP_ADD,
/*35*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 6*/  JSOP_IFPRIMTOP, 0, 16,
/* 9*/  JSOP_SWAP,
/*10*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*13*/  JSOP_CALL, 0, 1,
/*16*/  JSOP_IFPRIMTOP, 0, 15,
/*19*/  JSOP_GOTO, 0, 4,
/*22*/  JSOP_POP,
/*23*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*26*/  JSOP_CALL, 0, 0,
/*29*/  JSOP_PRIMTOP, (JSTYPE_VOID),
/*31*/  JSOP_SWAP,
/*32*/  JSOP_POP,
/*33*/  JSOP_SWAP,
/*34*/  JSOP_DUP,
/*35*/  JSOP_DUP,
/*36*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/*39*/  JSOP_IFPRIMTOP, 0, 16,
/*42*/  JSOP_SWAP,
/*43*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_VOID),
/*46*/  JSOP_CALL, 0, 1,
/*49*/  JSOP_IFPRIMTOP, 0, 15,
/*52*/  JSOP_GOTO, 0, 4,
/*55*/  JSOP_POP,
/*56*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*59*/  JSOP_CALL, 0, 0,
/*62*/  JSOP_PRIMTOP, (JSTYPE_VOID),
/*64*/  JSOP_SWAP,
/*65*/  JSOP_POP,
/*66*/  JSOP_ADD,
/*67*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode sign[39];
} unary_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(valueOf),
/* 5*/  JSOP_IFPRIMTOP, 0, 21,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_NUMBER),
/*12*/  JSOP_CALL, 0, 1,
/*15*/  JSOP_IFPRIMTOP, 0, 6,
/*18*/  JSOP_GOTO, 0, 9,
/*21*/  JSOP_SWAP,
/*22*/  JSOP_POP,
/*23*/  JSOP_GOTO, 0, 14,
/*26*/  JSOP_POP,
/*27*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(toString),
/*30*/  JSOP_CALL, 0, 0,
/*33*/  JSOP_PRIMTOP, (JSTYPE_NUMBER),
/*35*/  JSOP_SWAP,
/*36*/  JSOP_POP,
/*37*/  JSOP_IMACOP,
/*38*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode String[36];
} call_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString),
/* 5*/  JSOP_IFPRIMTOP, 0, 13,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_CALL, 0, 0,
/*12*/  JSOP_IFPRIMTOP, 0, 18,
/*15*/  JSOP_GOTO, 0, 4,
/*18*/  JSOP_POP,
/*19*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(valueOf),
/*22*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_STRING),
/*25*/  JSOP_CALL, 0, 1,
/*28*/  JSOP_PRIMTOP, (JSTYPE_STRING),
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_CALL, 0, 1,
/*35*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode String[36];
} new_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_GETPROP, 0, COMMON_ATOM_INDEX(toString),
/* 5*/  JSOP_IFPRIMTOP, 0, 13,
/* 8*/  JSOP_SWAP,
/* 9*/  JSOP_CALL, 0, 0,
/*12*/  JSOP_IFPRIMTOP, 0, 18,
/*15*/  JSOP_GOTO, 0, 4,
/*18*/  JSOP_POP,
/*19*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(valueOf),
/*22*/  JSOP_STRING, 0, COMMON_TYPE_ATOM_INDEX(JSTYPE_STRING),
/*25*/  JSOP_CALL, 0, 1,
/*28*/  JSOP_PRIMTOP, (JSTYPE_STRING),
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_NEW, 0, 1,
/*35*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode apply0[8];
    jsbytecode apply1[12];
    jsbytecode apply2[16];
    jsbytecode apply3[21];
    jsbytecode apply4[26];
    jsbytecode apply5[31];
    jsbytecode apply6[36];
    jsbytecode apply7[41];
    jsbytecode apply8[46];
    jsbytecode call0[7];
    jsbytecode call1[7];
    jsbytecode call2[7];
    jsbytecode call3[7];
    jsbytecode call4[7];
    jsbytecode call5[7];
    jsbytecode call6[7];
    jsbytecode call7[7];
    jsbytecode call8[7];
} apply_imacros = {
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_POP,
/* 4*/  JSOP_CALL, 0, 0,
/* 7*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_POP,
/* 8*/  JSOP_CALL, 0, 1,
/*11*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_POP,
/*12*/  JSOP_CALL, 0, 2,
/*15*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_POP,
/*17*/  JSOP_CALL, 0, 3,
/*20*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_DUP,
/*17*/  JSOP_INT8, 3,
/*19*/  JSOP_GETELEM,
/*20*/  JSOP_SWAP,
/*21*/  JSOP_POP,
/*22*/  JSOP_CALL, 0, 4,
/*25*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_DUP,
/*17*/  JSOP_INT8, 3,
/*19*/  JSOP_GETELEM,
/*20*/  JSOP_SWAP,
/*21*/  JSOP_DUP,
/*22*/  JSOP_INT8, 4,
/*24*/  JSOP_GETELEM,
/*25*/  JSOP_SWAP,
/*26*/  JSOP_POP,
/*27*/  JSOP_CALL, 0, 5,
/*30*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_DUP,
/*17*/  JSOP_INT8, 3,
/*19*/  JSOP_GETELEM,
/*20*/  JSOP_SWAP,
/*21*/  JSOP_DUP,
/*22*/  JSOP_INT8, 4,
/*24*/  JSOP_GETELEM,
/*25*/  JSOP_SWAP,
/*26*/  JSOP_DUP,
/*27*/  JSOP_INT8, 5,
/*29*/  JSOP_GETELEM,
/*30*/  JSOP_SWAP,
/*31*/  JSOP_POP,
/*32*/  JSOP_CALL, 0, 6,
/*35*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_DUP,
/*17*/  JSOP_INT8, 3,
/*19*/  JSOP_GETELEM,
/*20*/  JSOP_SWAP,
/*21*/  JSOP_DUP,
/*22*/  JSOP_INT8, 4,
/*24*/  JSOP_GETELEM,
/*25*/  JSOP_SWAP,
/*26*/  JSOP_DUP,
/*27*/  JSOP_INT8, 5,
/*29*/  JSOP_GETELEM,
/*30*/  JSOP_SWAP,
/*31*/  JSOP_DUP,
/*32*/  JSOP_INT8, 6,
/*34*/  JSOP_GETELEM,
/*35*/  JSOP_SWAP,
/*36*/  JSOP_POP,
/*37*/  JSOP_CALL, 0, 7,
/*40*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_DUP,
/* 4*/  JSOP_ZERO,
/* 5*/  JSOP_GETELEM,
/* 6*/  JSOP_SWAP,
/* 7*/  JSOP_DUP,
/* 8*/  JSOP_ONE,
/* 9*/  JSOP_GETELEM,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_DUP,
/*12*/  JSOP_INT8, 2,
/*14*/  JSOP_GETELEM,
/*15*/  JSOP_SWAP,
/*16*/  JSOP_DUP,
/*17*/  JSOP_INT8, 3,
/*19*/  JSOP_GETELEM,
/*20*/  JSOP_SWAP,
/*21*/  JSOP_DUP,
/*22*/  JSOP_INT8, 4,
/*24*/  JSOP_GETELEM,
/*25*/  JSOP_SWAP,
/*26*/  JSOP_DUP,
/*27*/  JSOP_INT8, 5,
/*29*/  JSOP_GETELEM,
/*30*/  JSOP_SWAP,
/*31*/  JSOP_DUP,
/*32*/  JSOP_INT8, 6,
/*34*/  JSOP_GETELEM,
/*35*/  JSOP_SWAP,
/*36*/  JSOP_DUP,
/*37*/  JSOP_INT8, 7,
/*39*/  JSOP_GETELEM,
/*40*/  JSOP_SWAP,
/*41*/  JSOP_POP,
/*42*/  JSOP_CALL, 0, 8,
/*45*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_POP,
/* 2*/  JSOP_NULL,
/* 3*/  JSOP_CALL, 0, 0,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 2,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 0,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 3,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 1,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 4,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 2,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 5,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 3,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 6,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 4,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 7,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 5,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 8,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 6,
/* 6*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 9,
/* 2*/  JSOP_POP,
/* 3*/  JSOP_CALL, 0, 7,
/* 6*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode for_in[13];
    jsbytecode for_each[13];
    jsbytecode for_in_native[10];
    jsbytecode for_each_native[10];
} iter_imacros = {
    {
/* 0*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(iterator),
/* 3*/  JSOP_INT8, (JSITER_ENUMERATE),
/* 5*/  JSOP_CALL, 0, 1,
/* 8*/  JSOP_OBJTOP, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff00) >> 8, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff),
/*11*/  JSOP_PUSH,
/*12*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(iterator),
/* 3*/  JSOP_INT8, (JSITER_ENUMERATE|JSITER_FOREACH),
/* 5*/  JSOP_CALL, 0, 1,
/* 8*/  JSOP_OBJTOP, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff00) >> 8, ((JSMSG_BAD_ITERATOR_RETURN) & 0xff),
/*11*/  JSOP_PUSH,
/*12*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_CALLBUILTIN, ((JSBUILTIN_ObjectToIterator) & 0xff00) >> 8, ((JSBUILTIN_ObjectToIterator) & 0xff),
/* 3*/  JSOP_INT8, (JSITER_ENUMERATE),
/* 5*/  JSOP_CALL, 0, 1,
/* 8*/  JSOP_PUSH,
/* 9*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_CALLBUILTIN, ((JSBUILTIN_ObjectToIterator) & 0xff00) >> 8, ((JSBUILTIN_ObjectToIterator) & 0xff),
/* 3*/  JSOP_INT8, (JSITER_ENUMERATE|JSITER_FOREACH),
/* 5*/  JSOP_CALL, 0, 1,
/* 8*/  JSOP_PUSH,
/* 9*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode custom_iter_next[12];
    jsbytecode native_iter_next[12];
} nextiter_imacros = {
    {
/* 0*/  JSOP_POP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_CALLPROP, 0, COMMON_ATOM_INDEX(next),
/* 5*/  JSOP_CALL, 0, 0,
/* 8*/  JSOP_DUP,
/* 9*/  JSOP_HOLE,
/*10*/  JSOP_STRICTNE,
/*11*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_POP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_CALLBUILTIN, ((JSBUILTIN_CallIteratorNext) & 0xff00) >> 8, ((JSBUILTIN_CallIteratorNext) & 0xff),
/* 5*/  JSOP_CALL, 0, 0,
/* 8*/  JSOP_DUP,
/* 9*/  JSOP_HOLE,
/*10*/  JSOP_STRICTNE,
/*11*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode getprop[10];
    jsbytecode getelem[10];
} getelem_imacros = {
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_CALLBUILTIN, ((JSBUILTIN_GetProperty) & 0xff00) >> 8, ((JSBUILTIN_GetProperty) & 0xff),
/* 4*/  JSOP_PICK, 2,
/* 6*/  JSOP_CALL, 0, 1,
/* 9*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_CALLBUILTIN, ((JSBUILTIN_GetElement) & 0xff00) >> 8, ((JSBUILTIN_GetElement) & 0xff),
/* 4*/  JSOP_PICK, 2,
/* 6*/  JSOP_CALL, 0, 1,
/* 9*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode callprop[12];
    jsbytecode callelem[12];
} callelem_imacros = {
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_CALLBUILTIN, ((JSBUILTIN_GetProperty) & 0xff00) >> 8, ((JSBUILTIN_GetProperty) & 0xff),
/* 5*/  JSOP_PICK, 3,
/* 7*/  JSOP_CALL, 0, 1,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_SWAP,
/* 1*/  JSOP_DUP,
/* 2*/  JSOP_CALLBUILTIN, ((JSBUILTIN_GetElement) & 0xff00) >> 8, ((JSBUILTIN_GetElement) & 0xff),
/* 5*/  JSOP_PICK, 3,
/* 7*/  JSOP_CALL, 0, 1,
/*10*/  JSOP_SWAP,
/*11*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode setprop[15];
    jsbytecode setelem[15];
} setelem_imacros = {
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_PICK, 3,
/* 3*/  JSOP_CALLBUILTIN, ((JSBUILTIN_SetProperty) & 0xff00) >> 8, ((JSBUILTIN_SetProperty) & 0xff),
/* 6*/  JSOP_PICK, 4,
/* 8*/  JSOP_PICK, 4,
/*10*/  JSOP_CALL, 0, 2,
/*13*/  JSOP_POP,
/*14*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_DUP,
/* 1*/  JSOP_PICK, 3,
/* 3*/  JSOP_CALLBUILTIN, ((JSBUILTIN_SetElement) & 0xff00) >> 8, ((JSBUILTIN_SetElement) & 0xff),
/* 6*/  JSOP_PICK, 4,
/* 8*/  JSOP_PICK, 4,
/*10*/  JSOP_CALL, 0, 2,
/*13*/  JSOP_POP,
/*14*/  JSOP_STOP,
    },
};
static struct {
    jsbytecode initprop[15];
    jsbytecode initelem[15];
} initelem_imacros = {
    {
/* 0*/  JSOP_PICK, 2,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_CALLBUILTIN, ((JSBUILTIN_SetProperty) & 0xff00) >> 8, ((JSBUILTIN_SetProperty) & 0xff),
/* 6*/  JSOP_PICK, 4,
/* 8*/  JSOP_PICK, 4,
/*10*/  JSOP_CALL, 0, 2,
/*13*/  JSOP_POP,
/*14*/  JSOP_STOP,
    },
    {
/* 0*/  JSOP_PICK, 2,
/* 2*/  JSOP_DUP,
/* 3*/  JSOP_CALLBUILTIN, ((JSBUILTIN_SetElement) & 0xff00) >> 8, ((JSBUILTIN_SetElement) & 0xff),
/* 6*/  JSOP_PICK, 4,
/* 8*/  JSOP_PICK, 4,
/*10*/  JSOP_CALL, 0, 2,
/*13*/  JSOP_POP,
/*14*/  JSOP_STOP,
    },
};
uint8 js_opcode2extra[JSOP_LIMIT] = {
    0,  /* JSOP_NOP */
    0,  /* JSOP_PUSH */
    0,  /* JSOP_POPV */
    0,  /* JSOP_ENTERWITH */
    0,  /* JSOP_LEAVEWITH */
    0,  /* JSOP_RETURN */
    0,  /* JSOP_GOTO */
    0,  /* JSOP_IFEQ */
    0,  /* JSOP_IFNE */
    0,  /* JSOP_ARGUMENTS */
    0,  /* JSOP_FORARG */
    0,  /* JSOP_FORLOCAL */
    0,  /* JSOP_DUP */
    0,  /* JSOP_DUP2 */
    0,  /* JSOP_SETCONST */
    3,  /* JSOP_BITOR */
    3,  /* JSOP_BITXOR */
    3,  /* JSOP_BITAND */
    3,  /* JSOP_EQ */
    3,  /* JSOP_NE */
    3,  /* JSOP_LT */
    3,  /* JSOP_LE */
    3,  /* JSOP_GT */
    3,  /* JSOP_GE */
    3,  /* JSOP_LSH */
    3,  /* JSOP_RSH */
    3,  /* JSOP_URSH */
    3,  /* JSOP_ADD */
    3,  /* JSOP_SUB */
    3,  /* JSOP_MUL */
    3,  /* JSOP_DIV */
    3,  /* JSOP_MOD */
    0,  /* JSOP_NOT */
    0,  /* JSOP_BITNOT */
    3,  /* JSOP_NEG */
    3,  /* JSOP_POS */
    0,  /* JSOP_DELNAME */
    0,  /* JSOP_DELPROP */
    0,  /* JSOP_DELELEM */
    0,  /* JSOP_TYPEOF */
    0,  /* JSOP_VOID */
    0,  /* JSOP_INCNAME */
    0,  /* JSOP_INCPROP */
    0,  /* JSOP_INCELEM */
    0,  /* JSOP_DECNAME */
    0,  /* JSOP_DECPROP */
    0,  /* JSOP_DECELEM */
    0,  /* JSOP_NAMEINC */
    0,  /* JSOP_PROPINC */
    0,  /* JSOP_ELEMINC */
    0,  /* JSOP_NAMEDEC */
    0,  /* JSOP_PROPDEC */
    0,  /* JSOP_ELEMDEC */
    0,  /* JSOP_GETPROP */
    0,  /* JSOP_SETPROP */
    1,  /* JSOP_GETELEM */
    2,  /* JSOP_SETELEM */
    0,  /* JSOP_CALLNAME */
    3,  /* JSOP_CALL */
    0,  /* JSOP_NAME */
    0,  /* JSOP_DOUBLE */
    0,  /* JSOP_STRING */
    0,  /* JSOP_ZERO */
    0,  /* JSOP_ONE */
    0,  /* JSOP_NULL */
    0,  /* JSOP_THIS */
    0,  /* JSOP_FALSE */
    0,  /* JSOP_TRUE */
    0,  /* JSOP_OR */
    0,  /* JSOP_AND */
    0,  /* JSOP_TABLESWITCH */
    0,  /* JSOP_LOOKUPSWITCH */
    0,  /* JSOP_STRICTEQ */
    0,  /* JSOP_STRICTNE */
    0,  /* JSOP_SETCALL */
    2,  /* JSOP_ITER */
    2,  /* JSOP_NEXTITER */
    0,  /* JSOP_ENDITER */
    8,  /* JSOP_APPLY */
    0,  /* JSOP_SWAP */
    0,  /* JSOP_OBJECT */
    0,  /* JSOP_POP */
    3,  /* JSOP_NEW */
    0,  /* JSOP_TRAP */
    0,  /* JSOP_GETARG */
    0,  /* JSOP_SETARG */
    0,  /* JSOP_GETLOCAL */
    0,  /* JSOP_SETLOCAL */
    0,  /* JSOP_UINT16 */
    0,  /* JSOP_NEWINIT */
    0,  /* JSOP_ENDINIT */
    0,  /* JSOP_INITPROP */
    2,  /* JSOP_INITELEM */
    0,  /* JSOP_DEFSHARP */
    0,  /* JSOP_USESHARP */
    0,  /* JSOP_INCARG */
    0,  /* JSOP_DECARG */
    0,  /* JSOP_ARGINC */
    0,  /* JSOP_ARGDEC */
    0,  /* JSOP_INCLOCAL */
    0,  /* JSOP_DECLOCAL */
    0,  /* JSOP_LOCALINC */
    0,  /* JSOP_LOCALDEC */
    0,  /* JSOP_IMACOP */
    0,  /* JSOP_FORNAME */
    0,  /* JSOP_FORPROP */
    0,  /* JSOP_FORELEM */
    0,  /* JSOP_POPN */
    0,  /* JSOP_BINDNAME */
    0,  /* JSOP_SETNAME */
    0,  /* JSOP_THROW */
    0,  /* JSOP_IN */
    0,  /* JSOP_INSTANCEOF */
    0,  /* JSOP_DEBUGGER */
    0,  /* JSOP_GOSUB */
    0,  /* JSOP_RETSUB */
    0,  /* JSOP_EXCEPTION */
    0,  /* JSOP_LINENO */
    0,  /* JSOP_CONDSWITCH */
    0,  /* JSOP_CASE */
    0,  /* JSOP_DEFAULT */
    0,  /* JSOP_EVAL */
    0,  /* JSOP_ENUMELEM */
    0,  /* JSOP_GETTER */
    0,  /* JSOP_SETTER */
    0,  /* JSOP_DEFFUN */
    0,  /* JSOP_DEFCONST */
    0,  /* JSOP_DEFVAR */
    0,  /* JSOP_LAMBDA */
    0,  /* JSOP_CALLEE */
    0,  /* JSOP_SETLOCALPOP */
    0,  /* JSOP_PICK */
    0,  /* JSOP_TRY */
    0,  /* JSOP_FINALLY */
    0,  /* JSOP_GETDSLOT */
    0,  /* JSOP_CALLDSLOT */
    0,  /* JSOP_ARGSUB */
    0,  /* JSOP_ARGCNT */
    0,  /* JSOP_DEFLOCALFUN */
    0,  /* JSOP_GOTOX */
    0,  /* JSOP_IFEQX */
    0,  /* JSOP_IFNEX */
    0,  /* JSOP_ORX */
    0,  /* JSOP_ANDX */
    0,  /* JSOP_GOSUBX */
    0,  /* JSOP_CASEX */
    0,  /* JSOP_DEFAULTX */
    0,  /* JSOP_TABLESWITCHX */
    0,  /* JSOP_LOOKUPSWITCHX */
    0,  /* JSOP_BACKPATCH */
    0,  /* JSOP_BACKPATCH_POP */
    0,  /* JSOP_THROWING */
    0,  /* JSOP_SETRVAL */
    0,  /* JSOP_RETRVAL */
    0,  /* JSOP_GETGVAR */
    0,  /* JSOP_SETGVAR */
    0,  /* JSOP_INCGVAR */
    0,  /* JSOP_DECGVAR */
    0,  /* JSOP_GVARINC */
    0,  /* JSOP_GVARDEC */
    0,  /* JSOP_REGEXP */
    0,  /* JSOP_DEFXMLNS */
    0,  /* JSOP_ANYNAME */
    0,  /* JSOP_QNAMEPART */
    0,  /* JSOP_QNAMECONST */
    0,  /* JSOP_QNAME */
    0,  /* JSOP_TOATTRNAME */
    0,  /* JSOP_TOATTRVAL */
    0,  /* JSOP_ADDATTRNAME */
    0,  /* JSOP_ADDATTRVAL */
    0,  /* JSOP_BINDXMLNAME */
    0,  /* JSOP_SETXMLNAME */
    0,  /* JSOP_XMLNAME */
    0,  /* JSOP_DESCENDANTS */
    0,  /* JSOP_FILTER */
    0,  /* JSOP_ENDFILTER */
    0,  /* JSOP_TOXML */
    0,  /* JSOP_TOXMLLIST */
    0,  /* JSOP_XMLTAGEXPR */
    0,  /* JSOP_XMLELTEXPR */
    0,  /* JSOP_XMLOBJECT */
    0,  /* JSOP_XMLCDATA */
    0,  /* JSOP_XMLCOMMENT */
    0,  /* JSOP_XMLPI */
    0,  /* JSOP_CALLPROP */
    0,  /* JSOP_GETUPVAR */
    0,  /* JSOP_CALLUPVAR */
    0,  /* JSOP_DELDESC */
    0,  /* JSOP_UINT24 */
    0,  /* JSOP_INDEXBASE */
    0,  /* JSOP_RESETBASE */
    0,  /* JSOP_RESETBASE0 */
    0,  /* JSOP_STARTXML */
    0,  /* JSOP_STARTXMLEXPR */
    2,  /* JSOP_CALLELEM */
    0,  /* JSOP_STOP */
    0,  /* JSOP_GETXPROP */
    0,  /* JSOP_CALLXMLNAME */
    0,  /* JSOP_TYPEOFEXPR */
    0,  /* JSOP_ENTERBLOCK */
    0,  /* JSOP_LEAVEBLOCK */
    0,  /* JSOP_IFPRIMTOP */
    0,  /* JSOP_PRIMTOP */
    0,  /* JSOP_GENERATOR */
    0,  /* JSOP_YIELD */
    0,  /* JSOP_ARRAYPUSH */
    0,  /* JSOP_GETFUNNS */
    0,  /* JSOP_ENUMCONSTELEM */
    0,  /* JSOP_LEAVEBLOCKEXPR */
    0,  /* JSOP_GETTHISPROP */
    0,  /* JSOP_GETARGPROP */
    0,  /* JSOP_GETLOCALPROP */
    0,  /* JSOP_INDEXBASE1 */
    0,  /* JSOP_INDEXBASE2 */
    0,  /* JSOP_INDEXBASE3 */
    0,  /* JSOP_CALLGVAR */
    0,  /* JSOP_CALLLOCAL */
    0,  /* JSOP_CALLARG */
    0,  /* JSOP_CALLBUILTIN */
    0,  /* JSOP_INT8 */
    0,  /* JSOP_INT32 */
    0,  /* JSOP_LENGTH */
    0,  /* JSOP_NEWARRAY */
    0,  /* JSOP_HOLE */
    0,  /* JSOP_DEFFUN_FC */
    0,  /* JSOP_DEFLOCALFUN_FC */
    0,  /* JSOP_LAMBDA_FC */
    0,  /* JSOP_OBJTOP */
    0,  /* JSOP_LOOP */
    0,  /* JSOP_GETUPVAR_DBG */
    0,  /* JSOP_CALLUPVAR_DBG */
    0,  /* JSOP_DEFFUN_DBGFC */
    0,  /* JSOP_DEFLOCALFUN_DBGFC */
    0,  /* JSOP_LAMBDA_DBGFC */
};
#define JSOP_IS_IMACOP(x) (0 \
 || x == JSOP_BITOR \
 || x == JSOP_BITXOR \
 || x == JSOP_BITAND \
 || x == JSOP_EQ \
 || x == JSOP_NE \
 || x == JSOP_LT \
 || x == JSOP_LE \
 || x == JSOP_GT \
 || x == JSOP_GE \
 || x == JSOP_LSH \
 || x == JSOP_RSH \
 || x == JSOP_URSH \
 || x == JSOP_ADD \
 || x == JSOP_SUB \
 || x == JSOP_MUL \
 || x == JSOP_DIV \
 || x == JSOP_MOD \
 || x == JSOP_NEG \
 || x == JSOP_POS \
 || x == JSOP_GETELEM \
 || x == JSOP_SETELEM \
 || x == JSOP_CALL \
 || x == JSOP_ITER \
 || x == JSOP_NEXTITER \
 || x == JSOP_APPLY \
 || x == JSOP_NEW \
 || x == JSOP_INITELEM \
 || x == JSOP_CALLELEM \
)
jsbytecode*
js_GetImacroStart(jsbytecode* pc) {
    if (size_t(pc - equality_imacros.any_obj) < 34) return equality_imacros.any_obj;
    if (size_t(pc - equality_imacros.obj_any) < 36) return equality_imacros.obj_any;
    if (size_t(pc - binary_imacros.any_obj) < 34) return binary_imacros.any_obj;
    if (size_t(pc - binary_imacros.obj_any) < 38) return binary_imacros.obj_any;
    if (size_t(pc - binary_imacros.obj_obj) < 68) return binary_imacros.obj_obj;
    if (size_t(pc - add_imacros.any_obj) < 34) return add_imacros.any_obj;
    if (size_t(pc - add_imacros.obj_any) < 36) return add_imacros.obj_any;
    if (size_t(pc - add_imacros.obj_obj) < 68) return add_imacros.obj_obj;
    if (size_t(pc - unary_imacros.sign) < 39) return unary_imacros.sign;
    if (size_t(pc - call_imacros.String) < 36) return call_imacros.String;
    if (size_t(pc - new_imacros.String) < 36) return new_imacros.String;
    if (size_t(pc - apply_imacros.apply0) < 8) return apply_imacros.apply0;
    if (size_t(pc - apply_imacros.apply1) < 12) return apply_imacros.apply1;
    if (size_t(pc - apply_imacros.apply2) < 16) return apply_imacros.apply2;
    if (size_t(pc - apply_imacros.apply3) < 21) return apply_imacros.apply3;
    if (size_t(pc - apply_imacros.apply4) < 26) return apply_imacros.apply4;
    if (size_t(pc - apply_imacros.apply5) < 31) return apply_imacros.apply5;
    if (size_t(pc - apply_imacros.apply6) < 36) return apply_imacros.apply6;
    if (size_t(pc - apply_imacros.apply7) < 41) return apply_imacros.apply7;
    if (size_t(pc - apply_imacros.apply8) < 46) return apply_imacros.apply8;
    if (size_t(pc - apply_imacros.call0) < 7) return apply_imacros.call0;
    if (size_t(pc - apply_imacros.call1) < 7) return apply_imacros.call1;
    if (size_t(pc - apply_imacros.call2) < 7) return apply_imacros.call2;
    if (size_t(pc - apply_imacros.call3) < 7) return apply_imacros.call3;
    if (size_t(pc - apply_imacros.call4) < 7) return apply_imacros.call4;
    if (size_t(pc - apply_imacros.call5) < 7) return apply_imacros.call5;
    if (size_t(pc - apply_imacros.call6) < 7) return apply_imacros.call6;
    if (size_t(pc - apply_imacros.call7) < 7) return apply_imacros.call7;
    if (size_t(pc - apply_imacros.call8) < 7) return apply_imacros.call8;
    if (size_t(pc - iter_imacros.for_in) < 13) return iter_imacros.for_in;
    if (size_t(pc - iter_imacros.for_each) < 13) return iter_imacros.for_each;
    if (size_t(pc - iter_imacros.for_in_native) < 10) return iter_imacros.for_in_native;
    if (size_t(pc - iter_imacros.for_each_native) < 10) return iter_imacros.for_each_native;
    if (size_t(pc - nextiter_imacros.custom_iter_next) < 12) return nextiter_imacros.custom_iter_next;
    if (size_t(pc - nextiter_imacros.native_iter_next) < 12) return nextiter_imacros.native_iter_next;
    if (size_t(pc - getelem_imacros.getprop) < 10) return getelem_imacros.getprop;
    if (size_t(pc - getelem_imacros.getelem) < 10) return getelem_imacros.getelem;
    if (size_t(pc - callelem_imacros.callprop) < 12) return callelem_imacros.callprop;
    if (size_t(pc - callelem_imacros.callelem) < 12) return callelem_imacros.callelem;
    if (size_t(pc - setelem_imacros.setprop) < 15) return setelem_imacros.setprop;
    if (size_t(pc - setelem_imacros.setelem) < 15) return setelem_imacros.setelem;
    if (size_t(pc - initelem_imacros.initprop) < 15) return initelem_imacros.initprop;
    if (size_t(pc - initelem_imacros.initelem) < 15) return initelem_imacros.initelem;
    return NULL;
}