summaryrefslogtreecommitdiff
path: root/vere/ext/nasm/asm/pptok.c
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
committerpolwex <polwex@sortug.com>2025-10-05 21:56:51 +0700
commitfcedfddf00b3f994e4f4e40332ac7fc192c63244 (patch)
tree51d38e62c7bdfcc5f9a5e9435fe820c93cfc9a3d /vere/ext/nasm/asm/pptok.c
claude is gud
Diffstat (limited to 'vere/ext/nasm/asm/pptok.c')
-rw-r--r--vere/ext/nasm/asm/pptok.c848
1 files changed, 848 insertions, 0 deletions
diff --git a/vere/ext/nasm/asm/pptok.c b/vere/ext/nasm/asm/pptok.c
new file mode 100644
index 0000000..c88d130
--- /dev/null
+++ b/vere/ext/nasm/asm/pptok.c
@@ -0,0 +1,848 @@
+/* Automatically generated from ./asm/pptok.dat by ./asm/pptok.pl */
+/* Do not edit */
+
+#include "compiler.h"
+#include "nctype.h"
+#include "nasmlib.h"
+#include "hashtbl.h"
+#include "preproc.h"
+
+const char * const pp_directives[120] = {
+ "%if",
+ "%ifctx",
+ "%ifdef",
+ "%ifdefalias",
+ "%ifdifi",
+ "%ifempty",
+ "%ifenv",
+ "%ifid",
+ "%ifidn",
+ "%ifidni",
+ "%ifmacro",
+ "%ifnum",
+ "%ifstr",
+ "%iftoken",
+ "%ifusable",
+ "%ifusing",
+ "%ifn",
+ "%ifnctx",
+ "%ifndef",
+ "%ifndefalias",
+ "%ifndifi",
+ "%ifnempty",
+ "%ifnenv",
+ "%ifnid",
+ "%ifnidn",
+ "%ifnidni",
+ "%ifnmacro",
+ "%ifnnum",
+ "%ifnstr",
+ "%ifntoken",
+ "%ifnusable",
+ "%ifnusing",
+ "%elif",
+ "%elifctx",
+ "%elifdef",
+ "%elifdefalias",
+ "%elifdifi",
+ "%elifempty",
+ "%elifenv",
+ "%elifid",
+ "%elifidn",
+ "%elifidni",
+ "%elifmacro",
+ "%elifnum",
+ "%elifstr",
+ "%eliftoken",
+ "%elifusable",
+ "%elifusing",
+ "%elifn",
+ "%elifnctx",
+ "%elifndef",
+ "%elifndefalias",
+ "%elifndifi",
+ "%elifnempty",
+ "%elifnenv",
+ "%elifnid",
+ "%elifnidn",
+ "%elifnidni",
+ "%elifnmacro",
+ "%elifnnum",
+ "%elifnstr",
+ "%elifntoken",
+ "%elifnusable",
+ "%elifnusing",
+ "%aliases",
+ "%arg",
+ "%clear",
+ "%depend",
+ "%else",
+ "%endif",
+ "%endm",
+ "%endmacro",
+ "%endrep",
+ "%error",
+ "%exitmacro",
+ "%exitrep",
+ "%fatal",
+ "%include",
+ "%line",
+ "%local",
+ "%null",
+ "%pop",
+ "%pragma",
+ "%push",
+ "%rep",
+ "%repl",
+ "%require",
+ "%rotate",
+ "%stacksize",
+ "%undef",
+ "%undefalias",
+ "%use",
+ "%warning",
+ NULL,
+ "%assign",
+ "%iassign",
+ "%defalias",
+ "%idefalias",
+ "%define",
+ "%idefine",
+ "%defstr",
+ "%idefstr",
+ "%deftok",
+ "%ideftok",
+ "%macro",
+ "%imacro",
+ "%pathsearch",
+ "%ipathsearch",
+ "%rmacro",
+ "%irmacro",
+ "%strcat",
+ "%istrcat",
+ "%strlen",
+ "%istrlen",
+ "%substr",
+ "%isubstr",
+ "%xdefine",
+ "%ixdefine",
+ "%unmacro",
+ "%unimacro",
+};
+const uint8_t pp_directives_len[120] = {
+ 3,
+ 6,
+ 6,
+ 11,
+ 7,
+ 8,
+ 6,
+ 5,
+ 6,
+ 7,
+ 8,
+ 6,
+ 6,
+ 8,
+ 9,
+ 8,
+ 4,
+ 7,
+ 7,
+ 12,
+ 8,
+ 9,
+ 7,
+ 6,
+ 7,
+ 8,
+ 9,
+ 7,
+ 7,
+ 9,
+ 10,
+ 9,
+ 5,
+ 8,
+ 8,
+ 13,
+ 9,
+ 10,
+ 8,
+ 7,
+ 8,
+ 9,
+ 10,
+ 8,
+ 8,
+ 10,
+ 11,
+ 10,
+ 6,
+ 9,
+ 9,
+ 14,
+ 10,
+ 11,
+ 9,
+ 8,
+ 9,
+ 10,
+ 11,
+ 9,
+ 9,
+ 11,
+ 12,
+ 11,
+ 8,
+ 4,
+ 6,
+ 7,
+ 5,
+ 6,
+ 5,
+ 9,
+ 7,
+ 6,
+ 10,
+ 8,
+ 6,
+ 8,
+ 5,
+ 6,
+ 5,
+ 4,
+ 7,
+ 5,
+ 4,
+ 5,
+ 8,
+ 7,
+ 10,
+ 6,
+ 11,
+ 4,
+ 8,
+ 9,
+ 7,
+ 8,
+ 9,
+ 10,
+ 7,
+ 8,
+ 7,
+ 8,
+ 7,
+ 8,
+ 6,
+ 7,
+ 11,
+ 12,
+ 7,
+ 8,
+ 7,
+ 8,
+ 7,
+ 8,
+ 7,
+ 8,
+ 8,
+ 9,
+ 8,
+ 9,
+};
+
+#define INVALID_HASH_ENTRY (65535/3)
+
+
+/* Primary preprocessor token hash */
+
+enum preproc_token pp_token_hash(const char *token)
+{
+ static const int16_t hashdata[512] = {
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 107,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 74,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 67,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 65,
+ -66,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 94,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 31,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 38,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 78,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ 54,
+ 70,
+ INVALID_HASH_ENTRY,
+ 12,
+ 21,
+ 0,
+ 0,
+ 3,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 80,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 49,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -77,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 56,
+ INVALID_HASH_ENTRY,
+ 47,
+ INVALID_HASH_ENTRY,
+ 37,
+ 0,
+ INVALID_HASH_ENTRY,
+ 37,
+ 0,
+ INVALID_HASH_ENTRY,
+ -20,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 7,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 116,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -32,
+ 39,
+ INVALID_HASH_ENTRY,
+ 72,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ 179,
+ -72,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 26,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -40,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 25,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ 98,
+ 0,
+ 71,
+ INVALID_HASH_ENTRY,
+ 53,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 76,
+ INVALID_HASH_ENTRY,
+ 63,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 20,
+ INVALID_HASH_ENTRY,
+ 99,
+ INVALID_HASH_ENTRY,
+ 14,
+ 0,
+ -6,
+ 91,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 164,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 37,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 59,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 117,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 19,
+ INVALID_HASH_ENTRY,
+ 16,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 105,
+ INVALID_HASH_ENTRY,
+ 18,
+ -47,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 104,
+ 8,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 109,
+ INVALID_HASH_ENTRY,
+ 4,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 100,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -53,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 85,
+ INVALID_HASH_ENTRY,
+ 87,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ 32,
+ 0,
+ 60,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 29,
+ 0,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -12,
+ 104,
+ 63,
+ INVALID_HASH_ENTRY,
+ 113,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 28,
+ 112,
+ 59,
+ INVALID_HASH_ENTRY,
+ -5,
+ 62,
+ INVALID_HASH_ENTRY,
+ 50,
+ 24,
+ 44,
+ INVALID_HASH_ENTRY,
+ 46,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 90,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 51,
+ -14,
+ 83,
+ 58,
+ INVALID_HASH_ENTRY,
+ 40,
+ INVALID_HASH_ENTRY,
+ 97,
+ 0,
+ INVALID_HASH_ENTRY,
+ 103,
+ 22,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 69,
+ INVALID_HASH_ENTRY,
+ -61,
+ INVALID_HASH_ENTRY,
+ 79,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 33,
+ INVALID_HASH_ENTRY,
+ 52,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 45,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 87,
+ 17,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 111,
+ -97,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 108,
+ 43,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 86,
+ 118,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ -23,
+ 66,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 89,
+ INVALID_HASH_ENTRY,
+ 69,
+ INVALID_HASH_ENTRY,
+ 41,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 75,
+ 15,
+ -90,
+ 5,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 9,
+ INVALID_HASH_ENTRY,
+ 75,
+ INVALID_HASH_ENTRY,
+ 48,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 68,
+ -9,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 11,
+ -31,
+ INVALID_HASH_ENTRY,
+ 73,
+ INVALID_HASH_ENTRY,
+ 119,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 110,
+ INVALID_HASH_ENTRY,
+ 92,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ };
+ uint32_t k1, k2;
+ uint64_t crc;
+ uint16_t ix;
+
+ crc = crc64i(UINT64_C(0x076259c3e291c26c), token);
+ k1 = ((uint32_t)crc & 0x1fe) + 0;
+ k2 = ((uint32_t)(crc >> 32) & 0x1fe) + 1;
+
+ ix = hashdata[k1] + hashdata[k2];
+ if (ix >= 120)
+ return PP_invalid;
+
+ if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix], token))
+ return PP_invalid;
+
+ return ix;
+}
+
+
+/* TASM compatibility preprocessor token hash */
+enum preproc_token pp_tasm_token_hash(const char *token)
+{
+ static const int16_t hashdata[32] = {
+ INVALID_HASH_ENTRY,
+ 0,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ 69,
+ 0,
+ 83,
+ 32,
+ 2,
+ 0,
+ 0,
+ 77,
+ INVALID_HASH_ENTRY,
+ 0,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ 79,
+ 68,
+ INVALID_HASH_ENTRY,
+ 63,
+ INVALID_HASH_ENTRY,
+ -65,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ INVALID_HASH_ENTRY,
+ };
+ uint32_t k1, k2;
+ uint64_t crc;
+ uint16_t ix;
+
+ crc = crc64i(UINT64_C(0x076259c3e291c26c), token);
+ k1 = ((uint32_t)crc & 0x1e) + 0;
+ k2 = ((uint32_t)(crc >> 32) & 0x1e) + 1;
+
+ ix = hashdata[k1] + hashdata[k2];
+ if (ix >= 120)
+ return PP_invalid;
+
+ if (!pp_directives[ix] || nasm_stricmp(pp_directives[ix]+1, token))
+ return PP_invalid;
+
+ return ix;
+}