#ifndef INSTRS_H__
#define INSTRS_H__ 1

/* DO NOT EDIT!
 *
 * This file is created automatically by make_func from
 * the specifications in func_spec.
 *
 * It holds the bytecode values for all machine instructions, plus
 * declarations of the tables holding information about the instructions.
 */

#include "exec.h"  /* struct instr_s == instr_t */

#define CODE_OFFSET  (0)
#define CODE_COUNT   (188)
  /* First offset and number of internal opcodes.
   */

#define EFUN_OFFSET  (188)
#define EFUN_COUNT   (24)
  /* First offset and number of efun opcodes.
   */

#define EFUN0_OFFSET  (212)
#define EFUN0_COUNT   (22)
  /* First offset and number of efun0 opcodes.
   */

#define EFUN1_OFFSET  (234)
#define EFUN1_COUNT   (108)
  /* First offset and number of efun1 opcodes.
   */

#define EFUN2_OFFSET  (342)
#define EFUN2_COUNT   (52)
  /* First offset and number of efun2 opcodes.
   */

#define EFUN3_OFFSET  (394)
#define EFUN3_COUNT   (11)
  /* First offset and number of efun3 opcodes.
   */

#define EFUN4_OFFSET  (405)
#define EFUN4_COUNT   (1)
  /* First offset and number of efun4 opcodes.
   */

#define EFUNV_OFFSET  (406)
#define EFUNV_COUNT   (69)
  /* First offset and number of efunv opcodes.
   */

#define LAST_INSTRUCTION_CODE (474)
  /* The highest token value in use.
   */

#define TEFUN_OFFSET EFUN0_OFFSET
  /* Offset of the first tabled efun.
   */

extern instr_t instrs[];
extern short efun_aliases[];
extern fulltype_t efun_arg_types[];
extern long efun_lpc_types[];
extern svalue_t *(*efun_table[])(svalue_t *);
extern svalue_t *(*vefun_table[])(svalue_t *, int);
  /* All tables are defined in efun_defs.c and compiled into lex.c
   * TODO: We might as well create efun_defs.h and compile it separately.
   */

/* --- codes --- */

#define F_ILLEGAL                      (0)
#define F_UNDEF                        (1)
#define F_EFUN0                        (2)
#define F_EFUN1                        (3)
#define F_EFUN2                        (4)
#define F_EFUN3                        (5)
#define F_EFUN4                        (6)
#define F_EFUNV                        (7)
#define F_IDENTIFIER                   (8)
#define F_STRING                       (9)
#define F_CSTRING0                     (10)
#define F_CSTRING1                     (11)
#define F_CSTRING2                     (12)
#define F_CSTRING3                     (13)
#define F_NUMBER                       (14)
#define F_CONST0                       (15)
#define F_CONST1                       (16)
#define F_NCONST1                      (17)
#define F_CLIT                         (18)
#define F_NCLIT                        (19)
#define F_FCONST0                      (20)
#define F_FLOAT                        (21)
#define F_CLOSURE                      (22)
#define F_SYMBOL                       (23)
#define F_RETURN                       (24)
#define F_RETURN0                      (25)
#define F_DEFAULT_RETURN               (26)
#define F_BREAK                        (27)
#define F_SWITCH                       (28)
#define F_SSCANF                       (29)
#define F_LOCAL                        (30)
#define F_CATCH                        (31)
#define F_INC                          (32)
#define F_DEC                          (33)
#define F_POST_INC                     (34)
#define F_POST_DEC                     (35)
#define F_PRE_INC                      (36)
#define F_PRE_DEC                      (37)
#define F_LAND                         (38)
#define F_LOR                          (39)
#define F_ASSIGN                       (40)
#define F_VOID_ASSIGN                  (41)
#define F_ADD                          (42)
#define F_SUBTRACT                     (43)
#define F_MULTIPLY                     (44)
#define F_DIVIDE                       (45)
#define F_MOD                          (46)
#define F_GT                           (47)
#define F_GE                           (48)
#define F_LT                           (49)
#define F_LE                           (50)
#define F_EQ                           (51)
#define F_NE                           (52)
#define F_COMPL                        (53)
#define F_AND                          (54)
#define F_OR                           (55)
#define F_XOR                          (56)
#define F_LSH                          (57)
#define F_RSH                          (58)
#define F_RSHL                         (59)
#define F_NOT                          (60)
#define F_INDEX                        (61)
#define F_RINDEX                       (62)
#define F_AINDEX                       (63)
#define F_MAP_INDEX                    (64)
#define F_S_INDEX                      (65)
#define F_RANGE                        (66)
#define F_NR_RANGE                     (67)
#define F_RN_RANGE                     (68)
#define F_RR_RANGE                     (69)
#define F_NA_RANGE                     (70)
#define F_RA_RANGE                     (71)
#define F_AN_RANGE                     (72)
#define F_AR_RANGE                     (73)
#define F_AA_RANGE                     (74)
#define F_NX_RANGE                     (75)
#define F_RX_RANGE                     (76)
#define F_AX_RANGE                     (77)
#define F_VOID_ADD_EQ                  (78)
#define F_ADD_EQ                       (79)
#define F_SUB_EQ                       (80)
#define F_DIV_EQ                       (81)
#define F_MULT_EQ                      (82)
#define F_MOD_EQ                       (83)
#define F_AND_EQ                       (84)
#define F_OR_EQ                        (85)
#define F_XOR_EQ                       (86)
#define F_LSH_EQ                       (87)
#define F_RSH_EQ                       (88)
#define F_RSHL_EQ                      (89)
#define F_LAND_EQ                      (90)
#define F_LOR_EQ                       (91)
#define F_POP_VALUE                    (92)
#define F_POP_SECOND                   (93)
#define F_DUP                          (94)
#define F_LDUP                         (95)
#define F_SWAP_VALUES                  (96)
#define F_CLEAR_LOCALS                 (97)
#define F_SAVE_ARG_FRAME               (98)
#define F_RESTORE_ARG_FRAME            (99)
#define F_USE_ARG_FRAME                (100)
#define F_FLATTEN_XARG                 (101)
#define F_FBRANCH                      (102)
#define F_LBRANCH                      (103)
#define F_LBRANCH_WHEN_ZERO            (104)
#define F_LBRANCH_WHEN_NON_ZERO        (105)
#define F_BRANCH                       (106)
#define F_BRANCH_WHEN_ZERO             (107)
#define F_BRANCH_WHEN_NON_ZERO         (108)
#define F_BBRANCH_WHEN_ZERO            (109)
#define F_BBRANCH_WHEN_NON_ZERO        (110)
#define F_CALL_FUNCTION                (111)
#define F_CALL_INHERITED               (112)
#define F_CALL_INHERITED_NOARGS        (113)
#define F_CALL_CLOSURE                 (114)
#define F_CONTEXT_CLOSURE              (115)
#define F_CONTEXT_IDENTIFIER           (116)
#define F_PUSH_CONTEXT_LVALUE          (117)
#define F_CONTEXT_IDENTIFIER16         (118)
#define F_PUSH_CONTEXT16_LVALUE        (119)
#define F_PUSH_IDENTIFIER_LVALUE       (120)
#define F_VIRTUAL_VARIABLE             (121)
#define F_PUSH_VIRTUAL_VARIABLE_LVALUE (122)
#define F_IDENTIFIER16                 (123)
#define F_PUSH_IDENTIFIER16_LVALUE     (124)
#define F_PUSH_LOCAL_VARIABLE_LVALUE   (125)
#define F_PUSH_INDEXED_LVALUE          (126)
#define F_PUSH_RINDEXED_LVALUE         (127)
#define F_PUSH_AINDEXED_LVALUE         (128)
#define F_PUSH_INDEXED_S_LVALUE        (129)
#define F_INDEX_LVALUE                 (130)
#define F_RINDEX_LVALUE                (131)
#define F_AINDEX_LVALUE                (132)
#define F_INDEX_S_LVALUE               (133)
#define F_RANGE_LVALUE                 (134)
#define F_NR_RANGE_LVALUE              (135)
#define F_RN_RANGE_LVALUE              (136)
#define F_RR_RANGE_LVALUE              (137)
#define F_NA_RANGE_LVALUE              (138)
#define F_RA_RANGE_LVALUE              (139)
#define F_AN_RANGE_LVALUE              (140)
#define F_AR_RANGE_LVALUE              (141)
#define F_AA_RANGE_LVALUE              (142)
#define F_NX_RANGE_LVALUE              (143)
#define F_RX_RANGE_LVALUE              (144)
#define F_AX_RANGE_LVALUE              (145)
#define F_PUSH_PROTECTED_INDEXED_LVALUE (146)
#define F_PUSH_PROTECTED_RINDEXED_LVALUE (147)
#define F_PUSH_PROTECTED_AINDEXED_LVALUE (148)
#define F_PUSH_PROTECTED_INDEXED_MAP_LVALUE (149)
#define F_PUSH_PROTECTED_INDEXED_S_LVALUE (150)
#define F_PROTECTED_INDEX_LVALUE       (151)
#define F_PROTECTED_RINDEX_LVALUE      (152)
#define F_PROTECTED_AINDEX_LVALUE      (153)
#define F_PROTECTED_INDEX_S_LVALUE     (154)
#define F_PROTECTED_RANGE_LVALUE       (155)
#define F_PROTECTED_NR_RANGE_LVALUE    (156)
#define F_PROTECTED_RN_RANGE_LVALUE    (157)
#define F_PROTECTED_RR_RANGE_LVALUE    (158)
#define F_PROTECTED_NA_RANGE_LVALUE    (159)
#define F_PROTECTED_RA_RANGE_LVALUE    (160)
#define F_PROTECTED_AN_RANGE_LVALUE    (161)
#define F_PROTECTED_AR_RANGE_LVALUE    (162)
#define F_PROTECTED_AA_RANGE_LVALUE    (163)
#define F_PROTECTED_NX_RANGE_LVALUE    (164)
#define F_PROTECTED_RX_RANGE_LVALUE    (165)
#define F_PROTECTED_AX_RANGE_LVALUE    (166)
#define F_SIMUL_EFUN                   (167)
#define F_AGGREGATE                    (168)
#define F_M_AGGREGATE                  (169)
#define F_M_CAGGREGATE                 (170)
#define F_S_AGGREGATE                  (171)
#define F_S_M_AGGREGATE                (172)
#define F_PREVIOUS_OBJECT0             (173)
#define F_LAMBDA_CCONSTANT             (174)
#define F_LAMBDA_CONSTANT              (175)
#define F_PUSH_INDEXED_MAP_LVALUE      (176)
#define F_FOREACH                      (177)
#define F_FOREACH_REF                  (178)
#define F_FOREACH_RANGE                (179)
#define F_FOREACH_NEXT                 (180)
#define F_FOREACH_END                  (181)
#define F_END_CATCH                    (182)
#define F_BREAK_CONTINUE               (183)
#define F_BREAKN_CONTINUE              (184)
#define F_JUMP                         (185)
#define F_NO_WARN_DEPRECATED           (186)
#define F_ARRAY_RANGE_CHECK            (187)

/* --- efuns --- */

#define F_CALL_DIRECT                  (188)
#define F_CALL_OTHER                   (189)
#define F_CLONEP                       (190)
#define F_CLOSUREP                     (191)
#define F_EXTERN_CALL                  (192)
#define F_FLOATP                       (193)
#define F_INTP                         (194)
#define F_MAPPINGP                     (195)
#define F_MASTER                       (196)
#define F_NEGATE                       (197)
#define F_OBJECTP                      (198)
#define F_POINTERP                     (199)
#define F_RAISE_ERROR                  (200)
#define F_REFERENCEP                   (201)
#define F_SIZEOF                       (202)
#define F_STRINGP                      (203)
#define F_STRLEN                       (204)
#define F_STRUCTP                      (205)
#define F_SYMBOLP                      (206)
#define F_THIS_INTERACTIVE             (207)
#define F_THIS_OBJECT                  (208)
#define F_THIS_PLAYER                  (209)
#define F_THROW                        (210)
#define F_TYPEOF                       (211)

/* --- efun0s --- */

#define F_CALL_OUT_INFO                (212)
#define F_CALLER_STACK_DEPTH           (213)
#define F_COMMAND_STACK                (214)
#define F_COMMAND_STACK_DEPTH          (215)
#define F_DISABLE_COMMANDS             (216)
#define F_ENABLE_COMMANDS              (217)
#define F_GET_EVAL_COST                (218)
#define F_HEART_BEAT_INFO              (219)
#define F_QUERY_COMMAND                (220)
#define F_QUERY_LOAD_AVERAGE           (221)
#define F_QUERY_UDP_PORT               (222)
#define F_REGEXP_PACKAGE               (223)
#define F_RUSAGE                       (224)
#define F_SL_CLOSE                     (225)
#define F_SL_INSERT_ID                 (226)
#define F_TIME                         (227)
#define F_TLS_AVAILABLE                (228)
#define F_TLS_REFRESH_CERTS            (229)
#define F_UNSHADOW                     (230)
#define F_USERS                        (231)
#define F_UTIME                        (232)
#define F_WIZLIST_INFO                 (233)

/* --- efun1s --- */

#define F_ABS                          (234)
#define F_ACOS                         (235)
#define F_ALL_INVENTORY                (236)
#define F_ASIN                         (237)
#define F_ATAN                         (238)
#define F_BLUEPRINT                    (239)
#define F_CALLER_STACK                 (240)
#define F_CAPITALIZE                   (241)
#define F_CEIL                         (242)
#define F_CLONE_OBJECT                 (243)
#define F_COPY                         (244)
#define F_COS                          (245)
#define F_COUNT_BITS                   (246)
#define F_CTIME                        (247)
#define F_DEEP_COPY                    (248)
#define F_DESTRUCT                     (249)
#define F_EXP                          (250)
#define F_EXPORT_UID                   (251)
#define F_FILE_SIZE                    (252)
#define F_FIND_CALL_OUT                (253)
#define F_FIND_OBJECT                  (254)
#define F_FIRST_INVENTORY              (255)
#define F_FLOOR                        (256)
#define F_GET_COMBINE_CHARSET          (257)
#define F_GET_CONNECTION_CHARSET       (258)
#define F_GET_EXTRA_WIZINFO            (259)
#define F_GET_MAX_COMMANDS             (260)
#define F_GETEUID                      (261)
#define F_GETUID                       (262)
#define F_GMTIME                       (263)
#define F_INPUT_TO_INFO                (264)
#define F_INTERACTIVE                  (265)
#define F_INVERT_BITS                  (266)
#define F_LAST_BIT                     (267)
#define F_LIVING                       (268)
#define F_LOAD_NAME                    (269)
#define F_LOAD_OBJECT                  (270)
#define F_LOCALTIME                    (271)
#define F_LOG                          (272)
#define F_LOWER_CASE                   (273)
#define F_M_INDICES                    (274)
#define F_MAKE_SHARED_STRING           (275)
#define F_MKDIR                        (276)
#define F_MKTIME                       (277)
#define F_NEXT_INVENTORY               (278)
#define F_NOTIFY_FAIL                  (279)
#define F_OBJECT_NAME                  (280)
#define F_OBJECT_TIME                  (281)
#define F_PREVIOUS_OBJECT              (282)
#define F_PROCESS_STRING               (283)
#define F_PROGRAM_NAME                 (284)
#define F_PROGRAM_TIME                 (285)
#define F_QUERY_EDITING                (286)
#define F_QUERY_IDLE                   (287)
#define F_QUERY_INPUT_PENDING          (288)
#define F_QUERY_IP_NAME                (289)
#define F_QUERY_IP_NUMBER              (290)
#define F_QUERY_LIMITS                 (291)
#define F_QUERY_MUD_PORT               (292)
#define F_QUERY_NOTIFY_FAIL            (293)
#define F_QUERY_ONCE_INTERACTIVE       (294)
#define F_QUERY_SHADOWING              (295)
#define F_QUERY_SNOOP                  (296)
#define F_QUERY_VERB                   (297)
#define F_QUOTE                        (298)
#define F_RANDOM                       (299)
#define F_REMOVE_CALL_OUT              (300)
#define F_REMOVE_INTERACTIVE           (301)
#define F_RESTORE_OBJECT               (302)
#define F_RESTORE_VALUE                (303)
#define F_REVERSE                      (304)
#define F_RM                           (305)
#define F_RMDIR                        (306)
#define F_SET_BUFFER_SIZE              (307)
#define F_SET_COMBINE_CHARSET          (308)
#define F_SET_EXTRA_WIZINFO_SIZE       (309)
#define F_SET_HEART_BEAT               (310)
#define F_SET_MODIFY_COMMAND           (311)
#define F_SET_NEXT_RESET               (312)
#define F_SET_THIS_OBJECT              (313)
#define F_SET_THIS_PLAYER              (314)
#define F_SETEUID                      (315)
#define F_SGN                          (316)
#define F_SHUTDOWN                     (317)
#define F_SIN                          (318)
#define F_SL_OPEN                      (319)
#define F_SQRT                         (320)
#define F_SYMBOL_VARIABLE              (321)
#define F_TAN                          (322)
#define F_TLS_DEINIT_CONNECTION        (323)
#define F_TLS_ERROR                    (324)
#define F_TLS_QUERY_CONNECTION_INFO    (325)
#define F_TLS_QUERY_CONNECTION_STATE   (326)
#define F_TO_ARRAY                     (327)
#define F_TO_FLOAT                     (328)
#define F_TO_INT                       (329)
#define F_TO_OBJECT                    (330)
#define F_TO_STRING                    (331)
#define F_TRACE                        (332)
#define F_TRACEPREFIX                  (333)
#define F_TRANSPOSE_ARRAY              (334)
#define F_UNMKMAPPING                  (335)
#define F_UNQUOTE                      (336)
#define F_UPPER_CASE                   (337)
#define F_WIDTHOF                      (338)
#define F_WRITE                        (339)
#define F_XML_GENERATE                 (340)
#define F_XML_PARSE                    (341)

/* --- efun2s --- */

#define F_AND_BITS                     (342)
#define F_ATAN2                        (343)
#define F_BASEOF                       (344)
#define F_BINARY_MESSAGE               (345)
#define F_CLEAR_BIT                    (346)
#define F_CONFIGURE_DRIVER             (347)
#define F_COPY_FILE                    (348)
#define F_CRYPT                        (349)
#define F_DEBUG_MESSAGE                (350)
#define F_ENABLE_TELNET                (351)
#define F_EXEC                         (352)
#define F_EXPAND_DEFINE                (353)
#define F_EXPLODE                      (354)
#define F_FUNCTIONLIST                 (355)
#define F_GET_DIR                      (356)
#define F_GET_ERROR_FILE               (357)
#define F_IMPLODE                      (358)
#define F_INTERSECT_ALIST              (359)
#define F_LAMBDA                       (360)
#define F_LAST_INSTRUCTIONS            (361)
#define F_M_ALLOCATE                   (362)
#define F_M_DELETE                     (363)
#define F_M_ENTRY                      (364)
#define F_M_REALLOCATE                 (365)
#define F_M_VALUES                     (366)
#define F_MATCH_COMMAND                (367)
#define F_MD5_CRYPT                    (368)
#define F_MOVE_OBJECT                  (369)
#define F_NET_CONNECT                  (370)
#define F_OR_BITS                      (371)
#define F_POW                          (372)
#define F_QUERY_ACTIONS                (373)
#define F_REMOVE_ACTION                (374)
#define F_RENAME                       (375)
#define F_RENAME_OBJECT                (376)
#define F_SET_BIT                      (377)
#define F_SET_CONNECTION_CHARSET       (378)
#define F_SET_DRIVER_HOOK              (379)
#define F_SET_ENVIRONMENT              (380)
#define F_SET_EXTRA_WIZINFO            (381)
#define F_SET_IS_WIZARD                (382)
#define F_SET_MAX_COMMANDS             (383)
#define F_SET_PROMPT                   (384)
#define F_SHADOW                       (385)
#define F_STRUCT_INFO                  (386)
#define F_SYMBOL_FUNCTION              (387)
#define F_TELL_OBJECT                  (388)
#define F_TEST_BIT                     (389)
#define F_TLS_CHECK_CERTIFICATE        (390)
#define F_UNBOUND_LAMBDA               (391)
#define F_VARIABLE_LIST                (392)
#define F_XOR_BITS                     (393)

/* --- efun3s --- */

#define F_CONFIGURE_INTERACTIVE        (394)
#define F_EXECUTE_COMMAND              (395)
#define F_HMAC                         (396)
#define F_NEXT_BIT                     (397)
#define F_REGEXP                       (398)
#define F_REGEXPLODE                   (399)
#define F_SEND_UDP                     (400)
#define F_STRRSTR                      (401)
#define F_STRSTR                       (402)
#define F_WRITE_BYTES                  (403)
#define F_WRITE_FILE                   (404)

/* --- efun4s --- */

#define F_REGREPLACE                   (405)

/* --- vefuns --- */

#define F_ADD_ACTION                   (406)
#define F_ALL_ENVIRONMENT              (407)
#define F_ALLOCATE                     (408)
#define F_APPLY                        (409)
#define F_ASSOC                        (410)
#define F_BIND_LAMBDA                  (411)
#define F_CALL_DIRECT_RESOLVED         (412)
#define F_CALL_OUT                     (413)
#define F_CALL_RESOLVED                (414)
#define F_CLONES                       (415)
#define F_COMMAND                      (416)
#define F_COPY_BITS                    (417)
#define F_DEBUG_INFO                   (418)
#define F_DEEP_INVENTORY               (419)
#define F_ED                           (420)
#define F_ENVIRONMENT                  (421)
#define F_FILTER                       (422)
#define F_FILTER_INDICES               (423)
#define F_FILTER_OBJECTS               (424)
#define F_FIND_INPUT_TO                (425)
#define F_FUNCALL                      (426)
#define F_FUNCTION_EXISTS              (427)
#define F_GARBAGE_COLLECTION           (428)
#define F_GET_TYPE_INFO                (429)
#define F_HASH                         (430)
#define F_INCLUDE_LIST                 (431)
#define F_INHERIT_LIST                 (432)
#define F_INPUT_TO                     (433)
#define F_INSERT_ALIST                 (434)
#define F_LIMITED                      (435)
#define F_M_ADD                        (436)
#define F_M_CONTAINS                   (437)
#define F_MAP                          (438)
#define F_MAP_INDICES                  (439)
#define F_MAP_OBJECTS                  (440)
#define F_MAX                          (441)
#define F_MD5                          (442)
#define F_MEMBER                       (443)
#define F_MIN                          (444)
#define F_MKMAPPING                    (445)
#define F_OBJECT_INFO                  (446)
#define F_ORDER_ALIST                  (447)
#define F_PRESENT                      (448)
#define F_PRESENT_CLONE                (449)
#define F_PRINTF                       (450)
#define F_READ_BYTES                   (451)
#define F_READ_FILE                    (452)
#define F_REGMATCH                     (453)
#define F_REMOVE_INPUT_TO              (454)
#define F_REPLACE_PROGRAM              (455)
#define F_RMEMBER                      (456)
#define F_SAVE_OBJECT                  (457)
#define F_SAVE_VALUE                   (458)
#define F_SAY                          (459)
#define F_SET_LIMITS                   (460)
#define F_SHA1                         (461)
#define F_SL_EXEC                      (462)
#define F_SNOOP                        (463)
#define F_SORT_ARRAY                   (464)
#define F_SPRINTF                      (465)
#define F_STRFTIME                     (466)
#define F_TELL_ROOM                    (467)
#define F_TERMINAL_COLOUR              (468)
#define F_TLS_INIT_CONNECTION          (469)
#define F_TO_STRUCT                    (470)
#define F_TRIM                         (471)
#define F_UNIQUE_ARRAY                 (472)
#define F_VARIABLE_EXISTS              (473)
#define F_WALK_MAPPING                 (474)

/************************************************************************/

#endif /* INSTRS_H__ */
