HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/ubuntu/neovim/build/src/nvim/auto/options_map.generated.h
static const struct { const char *name; OptIndex opt_idx; } option_hash_elems[] = {
  { .name = "wa", .opt_idx = kOptWriteany },
  { .name = "ea", .opt_idx = kOptEqualalways },
  { .name = "ma", .opt_idx = kOptModifiable },
  { .name = "pa", .opt_idx = kOptPath },
  { .name = "eb", .opt_idx = kOptErrorbells },
  { .name = "wb", .opt_idx = kOptWritebackup },
  { .name = "sb", .opt_idx = kOptSplitbelow },
  { .name = "vb", .opt_idx = kOptVisualbell },
  { .name = "pb", .opt_idx = kOptPumblend },
  { .name = "cb", .opt_idx = kOptClipboard },
  { .name = "cc", .opt_idx = kOptColorcolumn },
  { .name = "sc", .opt_idx = kOptShowcmd },
  { .name = "ic", .opt_idx = kOptIgnorecase },
  { .name = "uc", .opt_idx = kOptUpdatecount },
  { .name = "wc", .opt_idx = kOptWildchar },
  { .name = "tc", .opt_idx = kOptTagcase },
  { .name = "ed", .opt_idx = kOptEdcompatible },
  { .name = "wd", .opt_idx = kOptWritedelay },
  { .name = "gd", .opt_idx = kOptGdefault },
  { .name = "sd", .opt_idx = kOptShada },
  { .name = "cd", .opt_idx = kOptCdpath },
  { .name = "ve", .opt_idx = kOptVirtualedit },
  { .name = "qe", .opt_idx = kOptQuoteescape },
  { .name = "re", .opt_idx = kOptRegexpengine },
  { .name = "tf", .opt_idx = kOptTtyfast },
  { .name = "ef", .opt_idx = kOptErrorfile },
  { .name = "ff", .opt_idx = kOptFileformat },
  { .name = "nf", .opt_idx = kOptNrformats },
  { .name = "cf", .opt_idx = kOptConfirm },
  { .name = "hf", .opt_idx = kOptHelpfile },
  { .name = "bg", .opt_idx = kOptBackground },
  { .name = "dg", .opt_idx = kOptDigraph },
  { .name = "sh", .opt_idx = kOptShell },
  { .name = "bh", .opt_idx = kOptBufhidden },
  { .name = "hh", .opt_idx = kOptHelpheight },
  { .name = "mh", .opt_idx = kOptMousehide },
  { .name = "ph", .opt_idx = kOptPumheight },
  { .name = "ch", .opt_idx = kOptCmdheight },
  { .name = "wh", .opt_idx = kOptWinheight },
  { .name = "ai", .opt_idx = kOptAutoindent },
  { .name = "vi", .opt_idx = kOptShada },
  { .name = "ei", .opt_idx = kOptEventignore },
  { .name = "hi", .opt_idx = kOptHistory },
  { .name = "si", .opt_idx = kOptSmartindent },
  { .name = "pi", .opt_idx = kOptPreserveindent },
  { .name = "ri", .opt_idx = kOptRevins },
  { .name = "wi", .opt_idx = kOptWindow },
  { .name = "ci", .opt_idx = kOptCopyindent },
  { .name = "sj", .opt_idx = kOptScrolljump },
  { .name = "bk", .opt_idx = kOptBackup },
  { .name = "hk", .opt_idx = kOptHkmap },
  { .name = "ul", .opt_idx = kOptUndolevels },
  { .name = "ml", .opt_idx = kOptModeline },
  { .name = "bl", .opt_idx = kOptBuflisted },
  { .name = "hl", .opt_idx = kOptHighlight },
  { .name = "tl", .opt_idx = kOptTaglength },
  { .name = "rl", .opt_idx = kOptRightleft },
  { .name = "al", .opt_idx = kOptAleph },
  { .name = "tm", .opt_idx = kOptTimeoutlen },
  { .name = "im", .opt_idx = kOptInsertmode },
  { .name = "sm", .opt_idx = kOptShowmatch },
  { .name = "wm", .opt_idx = kOptWrapmargin },
  { .name = "pm", .opt_idx = kOptPatchmode },
  { .name = "km", .opt_idx = kOptKeymodel },
  { .name = "lm", .opt_idx = kOptLangmenu },
  { .name = "so", .opt_idx = kOptScrolloff },
  { .name = "bo", .opt_idx = kOptBelloff },
  { .name = "go", .opt_idx = kOptGuioptions },
  { .name = "fo", .opt_idx = kOptFormatoptions },
  { .name = "ro", .opt_idx = kOptReadonly },
  { .name = "co", .opt_idx = kOptColumns },
  { .name = "to", .opt_idx = kOptTimeout },
  { .name = "mp", .opt_idx = kOptMakeprg },
  { .name = "gp", .opt_idx = kOptGrepprg },
  { .name = "sp", .opt_idx = kOptShellpipe },
  { .name = "ep", .opt_idx = kOptEqualprg },
  { .name = "fp", .opt_idx = kOptFormatprg },
  { .name = "pp", .opt_idx = kOptPackpath },
  { .name = "cp", .opt_idx = kOptCompatible },
  { .name = "kp", .opt_idx = kOptKeywordprg },
  { .name = "ar", .opt_idx = kOptAutoread },
  { .name = "sr", .opt_idx = kOptShiftround },
  { .name = "ur", .opt_idx = kOptUndoreload },
  { .name = "tr", .opt_idx = kOptTagrelative },
  { .name = "bs", .opt_idx = kOptBackspace },
  { .name = "is", .opt_idx = kOptIncsearch },
  { .name = "ws", .opt_idx = kOptWrapscan },
  { .name = "fs", .opt_idx = kOptFsync },
  { .name = "ss", .opt_idx = kOptSidescroll },
  { .name = "ts", .opt_idx = kOptTabstop },
  { .name = "ls", .opt_idx = kOptLaststatus },
  { .name = "js", .opt_idx = kOptJoinspaces },
  { .name = "et", .opt_idx = kOptExpandtab },
  { .name = "ft", .opt_idx = kOptFiletype },
  { .name = "ut", .opt_idx = kOptUpdatetime },
  { .name = "pt", .opt_idx = kOptPastetoggle },
  { .name = "bt", .opt_idx = kOptBuftype },
  { .name = "su", .opt_idx = kOptSuffixes },
  { .name = "nu", .opt_idx = kOptNumber },
  { .name = "ru", .opt_idx = kOptRuler },
  { .name = "aw", .opt_idx = kOptAutowrite },
  { .name = "lw", .opt_idx = kOptLispwords },
  { .name = "sw", .opt_idx = kOptShiftwidth },
  { .name = "ww", .opt_idx = kOptWhichwrap },
  { .name = "tw", .opt_idx = kOptTextwidth },
  { .name = "pw", .opt_idx = kOptPumwidth },
  { .name = "ex", .opt_idx = kOptExrc },
  { .name = "dy", .opt_idx = kOptDisplay },
  { .name = "lz", .opt_idx = kOptLazyredraw },
  { .name = "awa", .opt_idx = kOptAutowriteall },
  { .name = "sua", .opt_idx = kOptSuffixesadd },
  { .name = "sta", .opt_idx = kOptSmarttab },
  { .name = "scb", .opt_idx = kOptScrollbind },
  { .name = "swb", .opt_idx = kOptSwitchbuf },
  { .name = "rdb", .opt_idx = kOptRedrawdebug },
  { .name = "wfb", .opt_idx = kOptWinfixbuf },
  { .name = "crb", .opt_idx = kOptCursorbind },
  { .name = "imc", .opt_idx = kOptImcmdline },
  { .name = "inc", .opt_idx = kOptInclude },
  { .name = "bkc", .opt_idx = kOptBackupcopy },
  { .name = "fic", .opt_idx = kOptFileignorecase },
  { .name = "fdc", .opt_idx = kOptFoldcolumn },
  { .name = "spc", .opt_idx = kOptSpellcapcheck },
  { .name = "stc", .opt_idx = kOptStatuscolumn },
  { .name = "wic", .opt_idx = kOptWildignorecase },
  { .name = "smc", .opt_idx = kOptSynmaxcol },
  { .name = "rlc", .opt_idx = kOptRightleftcmd },
  { .name = "enc", .opt_idx = kOptEncoding },
  { .name = "cuc", .opt_idx = kOptCursorcolumn },
  { .name = "tgc", .opt_idx = kOptTermguicolors },
  { .name = "ead", .opt_idx = kOptEadirection },
  { .name = "imd", .opt_idx = kOptImdisable },
  { .name = "acd", .opt_idx = kOptAutochdir },
  { .name = "mfd", .opt_idx = kOptMaxfuncdepth },
  { .name = "mmd", .opt_idx = kOptMaxmapdepth },
  { .name = "smd", .opt_idx = kOptShowmode },
  { .name = "mod", .opt_idx = kOptModified },
  { .name = "hid", .opt_idx = kOptHidden },
  { .name = "mle", .opt_idx = kOptModelineexpr },
  { .name = "sxe", .opt_idx = kOptShellxescape },
  { .name = "fde", .opt_idx = kOptFoldexpr },
  { .name = "udf", .opt_idx = kOptUndofile },
  { .name = "inf", .opt_idx = kOptInfercase },
  { .name = "isf", .opt_idx = kOptIsfname },
  { .name = "sdf", .opt_idx = kOptShadafile },
  { .name = "vif", .opt_idx = kOptShadafile },
  { .name = "spf", .opt_idx = kOptSpellfile },
  { .name = "swf", .opt_idx = kOptSwapfile },
  { .name = "eof", .opt_idx = kOptEndoffile },
  { .name = "ruf", .opt_idx = kOptRulerformat },
  { .name = "mef", .opt_idx = kOptMakeef },
  { .name = "def", .opt_idx = kOptDefine },
  { .name = "tpf", .opt_idx = kOptTermpastefilter },
  { .name = "wig", .opt_idx = kOptWildignore },
  { .name = "hlg", .opt_idx = kOptHelplang },
  { .name = "tag", .opt_idx = kOptTags },
  { .name = "cwh", .opt_idx = kOptCmdwinheight },
  { .name = "wmh", .opt_idx = kOptWinminheight },
  { .name = "cdh", .opt_idx = kOptCdhome },
  { .name = "pvh", .opt_idx = kOptPreviewheight },
  { .name = "wfh", .opt_idx = kOptWinfixheight },
  { .name = "imi", .opt_idx = kOptIminsert },
  { .name = "isi", .opt_idx = kOptIsident },
  { .name = "fdi", .opt_idx = kOptFoldignore },
  { .name = "bri", .opt_idx = kOptBreakindent },
  { .name = "ari", .opt_idx = kOptAllowrevins },
  { .name = "brk", .opt_idx = kOptBreakat },
  { .name = "spk", .opt_idx = kOptSplitkeep },
  { .name = "wak", .opt_idx = kOptWinaltkeys },
  { .name = "bsk", .opt_idx = kOptBackupskip },
  { .name = "isk", .opt_idx = kOptIskeyword },
  { .name = "lpl", .opt_idx = kOptLoadplugins },
  { .name = "gtl", .opt_idx = kOptGuitablabel },
  { .name = "sel", .opt_idx = kOptSelection },
  { .name = "ssl", .opt_idx = kOptShellslash },
  { .name = "fcl", .opt_idx = kOptFoldclose },
  { .name = "fdl", .opt_idx = kOptFoldlevel },
  { .name = "scl", .opt_idx = kOptSigncolumn },
  { .name = "fml", .opt_idx = kOptFoldminlines },
  { .name = "spl", .opt_idx = kOptSpelllang },
  { .name = "sol", .opt_idx = kOptStartofline },
  { .name = "eol", .opt_idx = kOptEndofline },
  { .name = "stl", .opt_idx = kOptStatusline },
  { .name = "tal", .opt_idx = kOptTabline },
  { .name = "tcl", .opt_idx = kOptTabclose },
  { .name = "csl", .opt_idx = kOptCompleteslash },
  { .name = "cul", .opt_idx = kOptCursorline },
  { .name = "ttm", .opt_idx = kOptTtimeoutlen },
  { .name = "icm", .opt_idx = kOptInccommand },
  { .name = "msm", .opt_idx = kOptMkspellmem },
  { .name = "gfm", .opt_idx = kOptGrepformat },
  { .name = "slm", .opt_idx = kOptSelectmode },
  { .name = "com", .opt_idx = kOptComments },
  { .name = "efm", .opt_idx = kOptErrorformat },
  { .name = "shm", .opt_idx = kOptShortmess },
  { .name = "fdm", .opt_idx = kOptFoldmethod },
  { .name = "lrm", .opt_idx = kOptLangremap },
  { .name = "tpm", .opt_idx = kOptTabpagemax },
  { .name = "wcm", .opt_idx = kOptWildcharm },
  { .name = "wim", .opt_idx = kOptWildmode },
  { .name = "gfn", .opt_idx = kOptGuifont },
  { .name = "bin", .opt_idx = kOptBinary },
  { .name = "cin", .opt_idx = kOptCindent },
  { .name = "fen", .opt_idx = kOptFoldenable },
  { .name = "fdn", .opt_idx = kOptFoldnestmax },
  { .name = "syn", .opt_idx = kOptSyntax },
  { .name = "emo", .opt_idx = kOptEmoji },
  { .name = "mco", .opt_idx = kOptMaxcombine },
  { .name = "sbo", .opt_idx = kOptScrollopt },
  { .name = "fdo", .opt_idx = kOptFoldopen },
  { .name = "spo", .opt_idx = kOptSpelloptions },
  { .name = "cpo", .opt_idx = kOptCpoptions },
  { .name = "lop", .opt_idx = kOptLispoptions },
  { .name = "mmp", .opt_idx = kOptMaxmempattern },
  { .name = "rtp", .opt_idx = kOptRuntimepath },
  { .name = "cmp", .opt_idx = kOptCasemap },
  { .name = "flp", .opt_idx = kOptFormatlistpat },
  { .name = "vop", .opt_idx = kOptViewoptions },
  { .name = "hkp", .opt_idx = kOptHkmapp },
  { .name = "wop", .opt_idx = kOptWildoptions },
  { .name = "dip", .opt_idx = kOptDiffopt },
  { .name = "lsp", .opt_idx = kOptLinespace },
  { .name = "isp", .opt_idx = kOptIsprint },
  { .name = "jop", .opt_idx = kOptJumpoptions },
  { .name = "kmp", .opt_idx = kOptKeymap },
  { .name = "top", .opt_idx = kOptTildeop },
  { .name = "shq", .opt_idx = kOptShellquote },
  { .name = "sxq", .opt_idx = kOptShellxquote },
  { .name = "gcr", .opt_idx = kOptGuicursor },
  { .name = "scr", .opt_idx = kOptScroll },
  { .name = "srr", .opt_idx = kOptShellredir },
  { .name = "sbr", .opt_idx = kOptShowbreak },
  { .name = "spr", .opt_idx = kOptSplitright },
  { .name = "lbr", .opt_idx = kOptLinebreak },
  { .name = "fmr", .opt_idx = kOptFoldmarker },
  { .name = "tsr", .opt_idx = kOptThesaurus },
  { .name = "dir", .opt_idx = kOptDirectory },
  { .name = "lnr", .opt_idx = kOptLangnoremap },
  { .name = "wbr", .opt_idx = kOptWinbar },
  { .name = "ims", .opt_idx = kOptImsearch },
  { .name = "mps", .opt_idx = kOptMatchpairs },
  { .name = "mis", .opt_idx = kOptMenuitems },
  { .name = "mls", .opt_idx = kOptModelines },
  { .name = "cms", .opt_idx = kOptCommentstring },
  { .name = "ffs", .opt_idx = kOptFileformats },
  { .name = "fcs", .opt_idx = kOptFillchars },
  { .name = "sps", .opt_idx = kOptSpellsuggest },
  { .name = "tbs", .opt_idx = kOptTagbsearch },
  { .name = "vbs", .opt_idx = kOptVerbose },
  { .name = "lcs", .opt_idx = kOptListchars },
  { .name = "vts", .opt_idx = kOptVartabstop },
  { .name = "sts", .opt_idx = kOptSofttabstop },
  { .name = "sms", .opt_idx = kOptSmoothscroll },
  { .name = "scs", .opt_idx = kOptSmartcase },
  { .name = "hls", .opt_idx = kOptHlsearch },
  { .name = "mat", .opt_idx = kOptMatchtime },
  { .name = "cpt", .opt_idx = kOptComplete },
  { .name = "fdt", .opt_idx = kOptFoldtext },
  { .name = "cot", .opt_idx = kOptCompleteopt },
  { .name = "sft", .opt_idx = kOptShowfulltag },
  { .name = "rdt", .opt_idx = kOptRedrawtime },
  { .name = "gtt", .opt_idx = kOptGuitabtooltip },
  { .name = "cfu", .opt_idx = kOptCompletefunc },
  { .name = "ofu", .opt_idx = kOptOmnifunc },
  { .name = "rnu", .opt_idx = kOptRelativenumber },
  { .name = "tfu", .opt_idx = kOptTagfunc },
  { .name = "ccv", .opt_idx = kOptCharconvert },
  { .name = "wiw", .opt_idx = kOptWinwidth },
  { .name = "gfw", .opt_idx = kOptGuifontwide },
  { .name = "wmw", .opt_idx = kOptWinminwidth },
  { .name = "nuw", .opt_idx = kOptNumberwidth },
  { .name = "pvw", .opt_idx = kOptPreviewwindow },
  { .name = "wfw", .opt_idx = kOptWinfixwidth },
  { .name = "fex", .opt_idx = kOptFormatexpr },
  { .name = "pex", .opt_idx = kOptPatchexpr },
  { .name = "pyx", .opt_idx = kOptPyxversion },
  { .name = "dex", .opt_idx = kOptDiffexpr },
  { .name = "bex", .opt_idx = kOptBackupext },
  { .name = "para", .opt_idx = kOptParagraphs },
  { .name = "arab", .opt_idx = kOptArabic },
  { .name = "bomb", .opt_idx = kOptBomb },
  { .name = "menc", .opt_idx = kOptMakeencoding },
  { .name = "exrc", .opt_idx = kOptExrc },
  { .name = "fenc", .opt_idx = kOptFileencoding },
  { .name = "sloc", .opt_idx = kOptShowcmdloc },
  { .name = "tenc", .opt_idx = kOptTermencoding },
  { .name = "inde", .opt_idx = kOptIndentexpr },
  { .name = "cole", .opt_idx = kOptConceallevel },
  { .name = "more", .opt_idx = kOptMore },
  { .name = "shcf", .opt_idx = kOptShellcmdflag },
  { .name = "qftf", .opt_idx = kOptQuickfixtextfunc },
  { .name = "diff", .opt_idx = kOptDiff },
  { .name = "path", .opt_idx = kOptPath },
  { .name = "indk", .opt_idx = kOptIndentkeys },
  { .name = "scbk", .opt_idx = kOptScrollback },
  { .name = "cink", .opt_idx = kOptCinkeys },
  { .name = "stal", .opt_idx = kOptShowtabline },
  { .name = "warn", .opt_idx = kOptWarn },
  { .name = "icon", .opt_idx = kOptIcon },
  { .name = "cino", .opt_idx = kOptCinoptions },
  { .name = "siso", .opt_idx = kOptSidescrolloff },
  { .name = "deco", .opt_idx = kOptDelcombine },
  { .name = "lisp", .opt_idx = kOptLisp },
  { .name = "ssop", .opt_idx = kOptSessionoptions },
  { .name = "stmp", .opt_idx = kOptShelltemp },
  { .name = "wrap", .opt_idx = kOptWrap },
  { .name = "lmap", .opt_idx = kOptLangmap },
  { .name = "bdir", .opt_idx = kOptBackupdir },
  { .name = "udir", .opt_idx = kOptUndodir },
  { .name = "vdir", .opt_idx = kOptViewdir },
  { .name = "vsts", .opt_idx = kOptVarsofttabstop },
  { .name = "tags", .opt_idx = kOptTags },
  { .name = "fdls", .opt_idx = kOptFoldlevelstart },
  { .name = "list", .opt_idx = kOptList },
  { .name = "sect", .opt_idx = kOptSections },
  { .name = "tgst", .opt_idx = kOptTagstack },
  { .name = "dict", .opt_idx = kOptDictionary },
  { .name = "cocu", .opt_idx = kOptConcealcursor },
  { .name = "wmnu", .opt_idx = kOptWildmenu },
  { .name = "odev", .opt_idx = kOptOpendevice },
  { .name = "cinw", .opt_idx = kOptCinwords },
  { .name = "ambw", .opt_idx = kOptAmbiwidth },
  { .name = "inex", .opt_idx = kOptIncludeexpr },
  { .name = "aleph", .opt_idx = kOptAleph },
  { .name = "bsdir", .opt_idx = kOptBrowsedir },
  { .name = "cinsd", .opt_idx = kOptCinscopedecls },
  { .name = "cedit", .opt_idx = kOptCedit },
  { .name = "debug", .opt_idx = kOptDebug },
  { .name = "emoji", .opt_idx = kOptEmoji },
  { .name = "fsync", .opt_idx = kOptFsync },
  { .name = "fencs", .opt_idx = kOptFileencodings },
  { .name = "hkmap", .opt_idx = kOptHkmap },
  { .name = "lines", .opt_idx = kOptLines },
  { .name = "magic", .opt_idx = kOptMagic },
  { .name = "mouse", .opt_idx = kOptMouse },
  { .name = "paste", .opt_idx = kOptPaste },
  { .name = "remap", .opt_idx = kOptRemap },
  { .name = "ruler", .opt_idx = kOptRuler },
  { .name = "shada", .opt_idx = kOptShada },
  { .name = "shell", .opt_idx = kOptShell },
  { .name = "spell", .opt_idx = kOptSpell },
  { .name = "title", .opt_idx = kOptTitle },
  { .name = "tsrfu", .opt_idx = kOptThesaurusfunc },
  { .name = "tbidi", .opt_idx = kOptTermbidi },
  { .name = "terse", .opt_idx = kOptTerse },
  { .name = "vfile", .opt_idx = kOptVerbosefile },
  { .name = "write", .opt_idx = kOptWrite },
  { .name = "winhl", .opt_idx = kOptWinhighlight },
  { .name = "winbl", .opt_idx = kOptWinblend },
  { .name = "arabic", .opt_idx = kOptArabic },
  { .name = "backup", .opt_idx = kOptBackup },
  { .name = "secure", .opt_idx = kOptSecure },
  { .name = "hidden", .opt_idx = kOptHidden },
  { .name = "opfunc", .opt_idx = kOptOperatorfunc },
  { .name = "define", .opt_idx = kOptDefine },
  { .name = "cdhome", .opt_idx = kOptCdhome },
  { .name = "briopt", .opt_idx = kOptBreakindentopt },
  { .name = "makeef", .opt_idx = kOptMakeef },
  { .name = "culopt", .opt_idx = kOptCursorlineopt },
  { .name = "number", .opt_idx = kOptNumber },
  { .name = "hkmapp", .opt_idx = kOptHkmapp },
  { .name = "binary", .opt_idx = kOptBinary },
  { .name = "winbar", .opt_idx = kOptWinbar },
  { .name = "syntax", .opt_idx = kOptSyntax },
  { .name = "window", .opt_idx = kOptWindow },
  { .name = "prompt", .opt_idx = kOptPrompt },
  { .name = "cdpath", .opt_idx = kOptCdpath },
  { .name = "report", .opt_idx = kOptReport },
  { .name = "scroll", .opt_idx = kOptScroll },
  { .name = "mousef", .opt_idx = kOptMousefocus },
  { .name = "mouset", .opt_idx = kOptMousetime },
  { .name = "mousem", .opt_idx = kOptMousemodel },
  { .name = "mouses", .opt_idx = kOptMouseshape },
  { .name = "revins", .opt_idx = kOptRevins },
  { .name = "fixeol", .opt_idx = kOptFixendofline },
  { .name = "keymap", .opt_idx = kOptKeymap },
  { .name = "channel", .opt_idx = kOptChannel },
  { .name = "tabstop", .opt_idx = kOptTabstop },
  { .name = "tabline", .opt_idx = kOptTabline },
  { .name = "include", .opt_idx = kOptInclude },
  { .name = "undodir", .opt_idx = kOptUndodir },
  { .name = "grepprg", .opt_idx = kOptGrepprg },
  { .name = "breakat", .opt_idx = kOptBreakat },
  { .name = "viewdir", .opt_idx = kOptViewdir },
  { .name = "isfname", .opt_idx = kOptIsfname },
  { .name = "buftype", .opt_idx = kOptBuftype },
  { .name = "diffopt", .opt_idx = kOptDiffopt },
  { .name = "digraph", .opt_idx = kOptDigraph },
  { .name = "tagcase", .opt_idx = kOptTagcase },
  { .name = "tagfunc", .opt_idx = kOptTagfunc },
  { .name = "isident", .opt_idx = kOptIsident },
  { .name = "guifont", .opt_idx = kOptGuifont },
  { .name = "makeprg", .opt_idx = kOptMakeprg },
  { .name = "belloff", .opt_idx = kOptBelloff },
  { .name = "columns", .opt_idx = kOptColumns },
  { .name = "tildeop", .opt_idx = kOptTildeop },
  { .name = "viminfo", .opt_idx = kOptShada },
  { .name = "timeout", .opt_idx = kOptTimeout },
  { .name = "cindent", .opt_idx = kOptCindent },
  { .name = "cinkeys", .opt_idx = kOptCinkeys },
  { .name = "langmap", .opt_idx = kOptLangmap },
  { .name = "confirm", .opt_idx = kOptConfirm },
  { .name = "showcmd", .opt_idx = kOptShowcmd },
  { .name = "isprint", .opt_idx = kOptIsprint },
  { .name = "verbose", .opt_idx = kOptVerbose },
  { .name = "casemap", .opt_idx = kOptCasemap },
  { .name = "history", .opt_idx = kOptHistory },
  { .name = "arshape", .opt_idx = kOptArabicshape },
  { .name = "display", .opt_idx = kOptDisplay },
  { .name = "ttyfast", .opt_idx = kOptTtyfast },
  { .name = "autoread", .opt_idx = kOptAutoread },
  { .name = "cinwords", .opt_idx = kOptCinwords },
  { .name = "comments", .opt_idx = kOptComments },
  { .name = "complete", .opt_idx = kOptComplete },
  { .name = "diffexpr", .opt_idx = kOptDiffexpr },
  { .name = "encoding", .opt_idx = kOptEncoding },
  { .name = "equalprg", .opt_idx = kOptEqualprg },
  { .name = "filetype", .opt_idx = kOptFiletype },
  { .name = "foldopen", .opt_idx = kOptFoldopen },
  { .name = "foldtext", .opt_idx = kOptFoldtext },
  { .name = "foldexpr", .opt_idx = kOptFoldexpr },
  { .name = "gdefault", .opt_idx = kOptGdefault },
  { .name = "helpfile", .opt_idx = kOptHelpfile },
  { .name = "helplang", .opt_idx = kOptHelplang },
  { .name = "hlsearch", .opt_idx = kOptHlsearch },
  { .name = "iminsert", .opt_idx = kOptIminsert },
  { .name = "imsearch", .opt_idx = kOptImsearch },
  { .name = "keymodel", .opt_idx = kOptKeymodel },
  { .name = "langmenu", .opt_idx = kOptLangmenu },
  { .name = "modeline", .opt_idx = kOptModeline },
  { .name = "modified", .opt_idx = kOptModified },
  { .name = "mousemev", .opt_idx = kOptMousemoveevent },
  { .name = "omnifunc", .opt_idx = kOptOmnifunc },
  { .name = "packpath", .opt_idx = kOptPackpath },
  { .name = "pumblend", .opt_idx = kOptPumblend },
  { .name = "pumwidth", .opt_idx = kOptPumwidth },
  { .name = "readonly", .opt_idx = kOptReadonly },
  { .name = "sections", .opt_idx = kOptSections },
  { .name = "showmode", .opt_idx = kOptShowmode },
  { .name = "smarttab", .opt_idx = kOptSmarttab },
  { .name = "suffixes", .opt_idx = kOptSuffixes },
  { .name = "swapfile", .opt_idx = kOptSwapfile },
  { .name = "titlelen", .opt_idx = kOptTitlelen },
  { .name = "tabclose", .opt_idx = kOptTabclose },
  { .name = "ttimeout", .opt_idx = kOptTtimeout },
  { .name = "titleold", .opt_idx = kOptTitleold },
  { .name = "termbidi", .opt_idx = kOptTermbidi },
  { .name = "tagstack", .opt_idx = kOptTagstack },
  { .name = "termsync", .opt_idx = kOptTermsync },
  { .name = "undofile", .opt_idx = kOptUndofile },
  { .name = "writeany", .opt_idx = kOptWriteany },
  { .name = "wrapscan", .opt_idx = kOptWrapscan },
  { .name = "winwidth", .opt_idx = kOptWinwidth },
  { .name = "wildchar", .opt_idx = kOptWildchar },
  { .name = "wildmenu", .opt_idx = kOptWildmenu },
  { .name = "wildmode", .opt_idx = kOptWildmode },
  { .name = "winblend", .opt_idx = kOptWinblend },
  { .name = "shadafile", .opt_idx = kOptShadafile },
  { .name = "smartcase", .opt_idx = kOptSmartcase },
  { .name = "ambiwidth", .opt_idx = kOptAmbiwidth },
  { .name = "imcmdline", .opt_idx = kOptImcmdline },
  { .name = "incsearch", .opt_idx = kOptIncsearch },
  { .name = "backspace", .opt_idx = kOptBackspace },
  { .name = "backupdir", .opt_idx = kOptBackupdir },
  { .name = "backupext", .opt_idx = kOptBackupext },
  { .name = "imdisable", .opt_idx = kOptImdisable },
  { .name = "endoffile", .opt_idx = kOptEndoffile },
  { .name = "endofline", .opt_idx = kOptEndofline },
  { .name = "cmdheight", .opt_idx = kOptCmdheight },
  { .name = "modelines", .opt_idx = kOptModelines },
  { .name = "shellpipe", .opt_idx = kOptShellpipe },
  { .name = "shelltemp", .opt_idx = kOptShelltemp },
  { .name = "spellfile", .opt_idx = kOptSpellfile },
  { .name = "spelllang", .opt_idx = kOptSpelllang },
  { .name = "thesaurus", .opt_idx = kOptThesaurus },
  { .name = "infercase", .opt_idx = kOptInfercase },
  { .name = "bufhidden", .opt_idx = kOptBufhidden },
  { .name = "nrformats", .opt_idx = kOptNrformats },
  { .name = "buflisted", .opt_idx = kOptBuflisted },
  { .name = "taglength", .opt_idx = kOptTaglength },
  { .name = "highlight", .opt_idx = kOptHighlight },
  { .name = "rightleft", .opt_idx = kOptRightleft },
  { .name = "guicursor", .opt_idx = kOptGuicursor },
  { .name = "whichwrap", .opt_idx = kOptWhichwrap },
  { .name = "switchbuf", .opt_idx = kOptSwitchbuf },
  { .name = "clipboard", .opt_idx = kOptClipboard },
  { .name = "iskeyword", .opt_idx = kOptIskeyword },
  { .name = "selection", .opt_idx = kOptSelection },
  { .name = "foldclose", .opt_idx = kOptFoldclose },
  { .name = "foldlevel", .opt_idx = kOptFoldlevel },
  { .name = "splitkeep", .opt_idx = kOptSplitkeep },
  { .name = "fillchars", .opt_idx = kOptFillchars },
  { .name = "wildcharm", .opt_idx = kOptWildcharm },
  { .name = "pumheight", .opt_idx = kOptPumheight },
  { .name = "linespace", .opt_idx = kOptLinespace },
  { .name = "menuitems", .opt_idx = kOptMenuitems },
  { .name = "synmaxcol", .opt_idx = kOptSynmaxcol },
  { .name = "langremap", .opt_idx = kOptLangremap },
  { .name = "winfixbuf", .opt_idx = kOptWinfixbuf },
  { .name = "winheight", .opt_idx = kOptWinheight },
  { .name = "linebreak", .opt_idx = kOptLinebreak },
  { .name = "shortmess", .opt_idx = kOptShortmess },
  { .name = "showbreak", .opt_idx = kOptShowbreak },
  { .name = "showmatch", .opt_idx = kOptShowmatch },
  { .name = "browsedir", .opt_idx = kOptBrowsedir },
  { .name = "cpoptions", .opt_idx = kOptCpoptions },
  { .name = "expandtab", .opt_idx = kOptExpandtab },
  { .name = "scrolloff", .opt_idx = kOptScrolloff },
  { .name = "scrollopt", .opt_idx = kOptScrollopt },
  { .name = "errorfile", .opt_idx = kOptErrorfile },
  { .name = "formatprg", .opt_idx = kOptFormatprg },
  { .name = "directory", .opt_idx = kOptDirectory },
  { .name = "lispwords", .opt_idx = kOptLispwords },
  { .name = "listchars", .opt_idx = kOptListchars },
  { .name = "autochdir", .opt_idx = kOptAutochdir },
  { .name = "autowrite", .opt_idx = kOptAutowrite },
  { .name = "matchtime", .opt_idx = kOptMatchtime },
  { .name = "patchexpr", .opt_idx = kOptPatchexpr },
  { .name = "patchmode", .opt_idx = kOptPatchmode },
  { .name = "mousetime", .opt_idx = kOptMousetime },
  { .name = "mousehide", .opt_idx = kOptMousehide },
  { .name = "textwidth", .opt_idx = kOptTextwidth },
  { .name = "matchpairs", .opt_idx = kOptMatchpairs },
  { .name = "foldenable", .opt_idx = kOptFoldenable },
  { .name = "tagbsearch", .opt_idx = kOptTagbsearch },
  { .name = "modifiable", .opt_idx = kOptModifiable },
  { .name = "paragraphs", .opt_idx = kOptParagraphs },
  { .name = "laststatus", .opt_idx = kOptLaststatus },
  { .name = "joinspaces", .opt_idx = kOptJoinspaces },
  { .name = "maxcombine", .opt_idx = kOptMaxcombine },
  { .name = "scrollback", .opt_idx = kOptScrollback },
  { .name = "scrollbind", .opt_idx = kOptScrollbind },
  { .name = "visualbell", .opt_idx = kOptVisualbell },
  { .name = "cursorbind", .opt_idx = kOptCursorbind },
  { .name = "delcombine", .opt_idx = kOptDelcombine },
  { .name = "ignorecase", .opt_idx = kOptIgnorecase },
  { .name = "backupcopy", .opt_idx = kOptBackupcopy },
  { .name = "autoindent", .opt_idx = kOptAutoindent },
  { .name = "showcmdloc", .opt_idx = kOptShowcmdloc },
  { .name = "lazyredraw", .opt_idx = kOptLazyredraw },
  { .name = "copyindent", .opt_idx = kOptCopyindent },
  { .name = "keywordprg", .opt_idx = kOptKeywordprg },
  { .name = "indentexpr", .opt_idx = kOptIndentexpr },
  { .name = "writedelay", .opt_idx = kOptWritedelay },
  { .name = "shellredir", .opt_idx = kOptShellredir },
  { .name = "errorbells", .opt_idx = kOptErrorbells },
  { .name = "formatexpr", .opt_idx = kOptFormatexpr },
  { .name = "tabpagemax", .opt_idx = kOptTabpagemax },
  { .name = "splitbelow", .opt_idx = kOptSplitbelow },
  { .name = "mouseshape", .opt_idx = kOptMouseshape },
  { .name = "compatible", .opt_idx = kOptCompatible },
  { .name = "cinoptions", .opt_idx = kOptCinoptions },
  { .name = "shiftwidth", .opt_idx = kOptShiftwidth },
  { .name = "splitright", .opt_idx = kOptSplitright },
  { .name = "guioptions", .opt_idx = kOptGuioptions },
  { .name = "helpheight", .opt_idx = kOptHelpheight },
  { .name = "scrolljump", .opt_idx = kOptScrolljump },
  { .name = "indentkeys", .opt_idx = kOptIndentkeys },
  { .name = "winaltkeys", .opt_idx = kOptWinaltkeys },
  { .name = "mkspellmem", .opt_idx = kOptMkspellmem },
  { .name = "shellslash", .opt_idx = kOptShellslash },
  { .name = "foldcolumn", .opt_idx = kOptFoldcolumn },
  { .name = "signcolumn", .opt_idx = kOptSigncolumn },
  { .name = "statusline", .opt_idx = kOptStatusline },
  { .name = "undoreload", .opt_idx = kOptUndoreload },
  { .name = "cursorline", .opt_idx = kOptCursorline },
  { .name = "inccommand", .opt_idx = kOptInccommand },
  { .name = "selectmode", .opt_idx = kOptSelectmode },
  { .name = "insertmode", .opt_idx = kOptInsertmode },
  { .name = "foldignore", .opt_idx = kOptFoldignore },
  { .name = "wildignore", .opt_idx = kOptWildignore },
  { .name = "dictionary", .opt_idx = kOptDictionary },
  { .name = "background", .opt_idx = kOptBackground },
  { .name = "shiftround", .opt_idx = kOptShiftround },
  { .name = "mousefocus", .opt_idx = kOptMousefocus },
  { .name = "mousemodel", .opt_idx = kOptMousemodel },
  { .name = "wrapmargin", .opt_idx = kOptWrapmargin },
  { .name = "grepformat", .opt_idx = kOptGrepformat },
  { .name = "fileformat", .opt_idx = kOptFileformat },
  { .name = "sidescroll", .opt_idx = kOptSidescroll },
  { .name = "foldmarker", .opt_idx = kOptFoldmarker },
  { .name = "iconstring", .opt_idx = kOptIconstring },
  { .name = "backupskip", .opt_idx = kOptBackupskip },
  { .name = "vartabstop", .opt_idx = kOptVartabstop },
  { .name = "pyxversion", .opt_idx = kOptPyxversion },
  { .name = "timeoutlen", .opt_idx = kOptTimeoutlen },
  { .name = "updatetime", .opt_idx = kOptUpdatetime },
  { .name = "redrawtime", .opt_idx = kOptRedrawtime },
  { .name = "foldmethod", .opt_idx = kOptFoldmethod },
  { .name = "shellquote", .opt_idx = kOptShellquote },
  { .name = "undolevels", .opt_idx = kOptUndolevels },
  { .name = "opendevice", .opt_idx = kOptOpendevice },
  { .name = "equalalways", .opt_idx = kOptEqualalways },
  { .name = "showtabline", .opt_idx = kOptShowtabline },
  { .name = "softtabstop", .opt_idx = kOptSofttabstop },
  { .name = "virtualedit", .opt_idx = kOptVirtualedit },
  { .name = "writebackup", .opt_idx = kOptWritebackup },
  { .name = "guitablabel", .opt_idx = kOptGuitablabel },
  { .name = "colorcolumn", .opt_idx = kOptColorcolumn },
  { .name = "arabicshape", .opt_idx = kOptArabicshape },
  { .name = "includeexpr", .opt_idx = kOptIncludeexpr },
  { .name = "eadirection", .opt_idx = kOptEadirection },
  { .name = "foldnestmax", .opt_idx = kOptFoldnestmax },
  { .name = "completeopt", .opt_idx = kOptCompleteopt },
  { .name = "updatecount", .opt_idx = kOptUpdatecount },
  { .name = "quoteescape", .opt_idx = kOptQuoteescape },
  { .name = "viminfofile", .opt_idx = kOptShadafile },
  { .name = "errorformat", .opt_idx = kOptErrorformat },
  { .name = "rulerformat", .opt_idx = kOptRulerformat },
  { .name = "eventignore", .opt_idx = kOptEventignore },
  { .name = "smartindent", .opt_idx = kOptSmartindent },
  { .name = "breakindent", .opt_idx = kOptBreakindent },
  { .name = "tagrelative", .opt_idx = kOptTagrelative },
  { .name = "loadplugins", .opt_idx = kOptLoadplugins },
  { .name = "runtimepath", .opt_idx = kOptRuntimepath },
  { .name = "guifontwide", .opt_idx = kOptGuifontwide },
  { .name = "winminwidth", .opt_idx = kOptWinminwidth },
  { .name = "charconvert", .opt_idx = kOptCharconvert },
  { .name = "fileformats", .opt_idx = kOptFileformats },
  { .name = "startofline", .opt_idx = kOptStartofline },
  { .name = "ttimeoutlen", .opt_idx = kOptTtimeoutlen },
  { .name = "langnoremap", .opt_idx = kOptLangnoremap },
  { .name = "maxmapdepth", .opt_idx = kOptMaxmapdepth },
  { .name = "wildoptions", .opt_idx = kOptWildoptions },
  { .name = "viewoptions", .opt_idx = kOptViewoptions },
  { .name = "lispoptions", .opt_idx = kOptLispoptions },
  { .name = "jumpoptions", .opt_idx = kOptJumpoptions },
  { .name = "numberwidth", .opt_idx = kOptNumberwidth },
  { .name = "allowrevins", .opt_idx = kOptAllowrevins },
  { .name = "verbosefile", .opt_idx = kOptVerbosefile },
  { .name = "titlestring", .opt_idx = kOptTitlestring },
  { .name = "mousescroll", .opt_idx = kOptMousescroll },
  { .name = "pastetoggle", .opt_idx = kOptPastetoggle },
  { .name = "showfulltag", .opt_idx = kOptShowfulltag },
  { .name = "redrawdebug", .opt_idx = kOptRedrawdebug },
  { .name = "shellxquote", .opt_idx = kOptShellxquote },
  { .name = "suffixesadd", .opt_idx = kOptSuffixesadd },
  { .name = "winfixwidth", .opt_idx = kOptWinfixwidth },
  { .name = "statuscolumn", .opt_idx = kOptStatuscolumn },
  { .name = "edcompatible", .opt_idx = kOptEdcompatible },
  { .name = "modelineexpr", .opt_idx = kOptModelineexpr },
  { .name = "cmdwinheight", .opt_idx = kOptCmdwinheight },
  { .name = "shellcmdflag", .opt_idx = kOptShellcmdflag },
  { .name = "shellxescape", .opt_idx = kOptShellxescape },
  { .name = "spelloptions", .opt_idx = kOptSpelloptions },
  { .name = "spellsuggest", .opt_idx = kOptSpellsuggest },
  { .name = "operatorfunc", .opt_idx = kOptOperatorfunc },
  { .name = "regexpengine", .opt_idx = kOptRegexpengine },
  { .name = "rightleftcmd", .opt_idx = kOptRightleftcmd },
  { .name = "makeencoding", .opt_idx = kOptMakeencoding },
  { .name = "fileencoding", .opt_idx = kOptFileencoding },
  { .name = "foldminlines", .opt_idx = kOptFoldminlines },
  { .name = "completefunc", .opt_idx = kOptCompletefunc },
  { .name = "winhighlight", .opt_idx = kOptWinhighlight },
  { .name = "winminheight", .opt_idx = kOptWinminheight },
  { .name = "winfixheight", .opt_idx = kOptWinfixheight },
  { .name = "conceallevel", .opt_idx = kOptConceallevel },
  { .name = "smoothscroll", .opt_idx = kOptSmoothscroll },
  { .name = "termencoding", .opt_idx = kOptTermencoding },
  { .name = "cursorcolumn", .opt_idx = kOptCursorcolumn },
  { .name = "autowriteall", .opt_idx = kOptAutowriteall },
  { .name = "maxfuncdepth", .opt_idx = kOptMaxfuncdepth },
  { .name = "fixendofline", .opt_idx = kOptFixendofline },
  { .name = "concealcursor", .opt_idx = kOptConcealcursor },
  { .name = "guitabtooltip", .opt_idx = kOptGuitabtooltip },
  { .name = "sidescrolloff", .opt_idx = kOptSidescrolloff },
  { .name = "spellcapcheck", .opt_idx = kOptSpellcapcheck },
  { .name = "completeslash", .opt_idx = kOptCompleteslash },
  { .name = "previewheight", .opt_idx = kOptPreviewheight },
  { .name = "previewwindow", .opt_idx = kOptPreviewwindow },
  { .name = "maxmempattern", .opt_idx = kOptMaxmempattern },
  { .name = "commentstring", .opt_idx = kOptCommentstring },
  { .name = "fileencodings", .opt_idx = kOptFileencodings },
  { .name = "cinscopedecls", .opt_idx = kOptCinscopedecls },
  { .name = "cursorlineopt", .opt_idx = kOptCursorlineopt },
  { .name = "formatlistpat", .opt_idx = kOptFormatlistpat },
  { .name = "formatoptions", .opt_idx = kOptFormatoptions },
  { .name = "thesaurusfunc", .opt_idx = kOptThesaurusfunc },
  { .name = "termguicolors", .opt_idx = kOptTermguicolors },
  { .name = "breakindentopt", .opt_idx = kOptBreakindentopt },
  { .name = "fileignorecase", .opt_idx = kOptFileignorecase },
  { .name = "foldlevelstart", .opt_idx = kOptFoldlevelstart },
  { .name = "mousemoveevent", .opt_idx = kOptMousemoveevent },
  { .name = "preserveindent", .opt_idx = kOptPreserveindent },
  { .name = "relativenumber", .opt_idx = kOptRelativenumber },
  { .name = "sessionoptions", .opt_idx = kOptSessionoptions },
  { .name = "varsofttabstop", .opt_idx = kOptVarsofttabstop },
  { .name = "wildignorecase", .opt_idx = kOptWildignorecase },
  { .name = "termpastefilter", .opt_idx = kOptTermpastefilter },
  { .name = "quickfixtextfunc", .opt_idx = kOptQuickfixtextfunc },
};

static int find_option_hash(const char *str, size_t len)
{
  int low = 0, high = 0;
  switch (len) {
    case 2: switch (str[1]) {
      case 'a': low = 0; high = 4; break;
      case 'b': low = 4; high = 10; break;
      case 'c': low = 10; high = 16; break;
      case 'd': low = 16; high = 21; break;
      case 'e': low = 21; high = 24; break;
      case 'f': low = 24; high = 30; break;
      case 'g': low = 30; high = 32; break;
      case 'h': low = 32; high = 39; break;
      case 'i': low = 39; high = 48; break;
      case 'j': low = 48; high = 49; break;
      case 'k': low = 49; high = 51; break;
      case 'l': low = 51; high = 58; break;
      case 'm': low = 58; high = 65; break;
      case 'o': low = 65; high = 72; break;
      case 'p': low = 72; high = 80; break;
      case 'r': low = 80; high = 84; break;
      case 's': low = 84; high = 92; break;
      case 't': low = 92; high = 97; break;
      case 'u': low = 97; high = 100; break;
      case 'w': low = 100; high = 106; break;
      case 'x': low = 106; high = 107; break;
      case 'y': low = 107; high = 108; break;
      case 'z': low = 108; high = 109; break;
      default: break;
    }
    break;
    case 3: switch (str[2]) {
      case 'a': low = 109; high = 112; break;
      case 'b': low = 112; high = 117; break;
      case 'c': low = 117; high = 130; break;
      case 'd': low = 130; high = 138; break;
      case 'e': low = 138; high = 141; break;
      case 'f': low = 141; high = 153; break;
      case 'g': low = 153; high = 156; break;
      case 'h': low = 156; high = 161; break;
      case 'i': low = 161; high = 166; break;
      case 'k': low = 166; high = 171; break;
      case 'l': low = 171; high = 187; break;
      case 'm': low = 187; high = 200; break;
      case 'n': low = 200; high = 206; break;
      case 'o': low = 206; high = 212; break;
      case 'p': low = 212; high = 226; break;
      case 'q': low = 226; high = 228; break;
      case 'r': low = 228; high = 239; break;
      case 's': low = 239; high = 255; break;
      case 't': low = 255; high = 262; break;
      case 'u': low = 262; high = 266; break;
      case 'v': low = 266; high = 267; break;
      case 'w': low = 267; high = 273; break;
      case 'x': low = 273; high = 278; break;
      default: break;
    }
    break;
    case 4: switch (str[3]) {
      case 'a': low = 278; high = 279; break;
      case 'b': low = 279; high = 281; break;
      case 'c': low = 281; high = 286; break;
      case 'e': low = 286; high = 289; break;
      case 'f': low = 289; high = 292; break;
      case 'h': low = 292; high = 293; break;
      case 'k': low = 293; high = 296; break;
      case 'l': low = 296; high = 297; break;
      case 'n': low = 297; high = 299; break;
      case 'o': low = 299; high = 302; break;
      case 'p': low = 302; high = 307; break;
      case 'r': low = 307; high = 310; break;
      case 's': low = 310; high = 313; break;
      case 't': low = 313; high = 317; break;
      case 'u': low = 317; high = 319; break;
      case 'v': low = 319; high = 320; break;
      case 'w': low = 320; high = 322; break;
      case 'x': low = 322; high = 323; break;
      default: break;
    }
    break;
    case 5: switch (str[0]) {
      case 'a': low = 323; high = 324; break;
      case 'b': low = 324; high = 325; break;
      case 'c': low = 325; high = 327; break;
      case 'd': low = 327; high = 328; break;
      case 'e': low = 328; high = 329; break;
      case 'f': low = 329; high = 331; break;
      case 'h': low = 331; high = 332; break;
      case 'l': low = 332; high = 333; break;
      case 'm': low = 333; high = 335; break;
      case 'p': low = 335; high = 336; break;
      case 'r': low = 336; high = 338; break;
      case 's': low = 338; high = 341; break;
      case 't': low = 341; high = 345; break;
      case 'v': low = 345; high = 346; break;
      case 'w': low = 346; high = 349; break;
      default: break;
    }
    break;
    case 6: switch (str[2]) {
      case 'a': low = 349; high = 350; break;
      case 'c': low = 350; high = 352; break;
      case 'd': low = 352; high = 353; break;
      case 'f': low = 353; high = 355; break;
      case 'h': low = 355; high = 356; break;
      case 'i': low = 356; high = 357; break;
      case 'k': low = 357; high = 358; break;
      case 'l': low = 358; high = 359; break;
      case 'm': low = 359; high = 361; break;
      case 'n': low = 361; high = 365; break;
      case 'o': low = 365; high = 366; break;
      case 'p': low = 366; high = 368; break;
      case 'r': low = 368; high = 369; break;
      case 'u': low = 369; high = 373; break;
      case 'v': low = 373; high = 374; break;
      case 'x': low = 374; high = 375; break;
      case 'y': low = 375; high = 376; break;
      default: break;
    }
    break;
    case 7: switch (str[2]) {
      case 'a': low = 376; high = 377; break;
      case 'b': low = 377; high = 379; break;
      case 'c': low = 379; high = 380; break;
      case 'd': low = 380; high = 381; break;
      case 'e': low = 381; high = 384; break;
      case 'f': low = 384; high = 387; break;
      case 'g': low = 387; high = 390; break;
      case 'i': low = 390; high = 392; break;
      case 'k': low = 392; high = 393; break;
      case 'l': low = 393; high = 396; break;
      case 'm': low = 396; high = 398; break;
      case 'n': low = 398; high = 402; break;
      case 'o': low = 402; high = 403; break;
      case 'p': low = 403; high = 404; break;
      case 'r': low = 404; high = 405; break;
      case 's': low = 405; high = 409; break;
      case 'y': low = 409; high = 410; break;
      default: break;
    }
    break;
    case 8: switch (str[0]) {
      case 'a': low = 410; high = 411; break;
      case 'c': low = 411; high = 414; break;
      case 'd': low = 414; high = 415; break;
      case 'e': low = 415; high = 417; break;
      case 'f': low = 417; high = 421; break;
      case 'g': low = 421; high = 422; break;
      case 'h': low = 422; high = 425; break;
      case 'i': low = 425; high = 427; break;
      case 'k': low = 427; high = 428; break;
      case 'l': low = 428; high = 429; break;
      case 'm': low = 429; high = 432; break;
      case 'o': low = 432; high = 433; break;
      case 'p': low = 433; high = 436; break;
      case 'r': low = 436; high = 437; break;
      case 's': low = 437; high = 442; break;
      case 't': low = 442; high = 449; break;
      case 'u': low = 449; high = 450; break;
      case 'w': low = 450; high = 457; break;
      default: break;
    }
    break;
    case 9: switch (str[2]) {
      case 'a': low = 457; high = 459; break;
      case 'b': low = 459; high = 460; break;
      case 'c': low = 460; high = 465; break;
      case 'd': low = 465; high = 470; break;
      case 'e': low = 470; high = 475; break;
      case 'f': low = 475; high = 479; break;
      case 'g': low = 479; high = 482; break;
      case 'i': low = 482; high = 486; break;
      case 'k': low = 486; high = 487; break;
      case 'l': low = 487; high = 493; break;
      case 'm': low = 493; high = 494; break;
      case 'n': low = 494; high = 501; break;
      case 'o': low = 501; high = 506; break;
      case 'p': low = 506; high = 507; break;
      case 'r': low = 507; high = 512; break;
      case 's': low = 512; high = 514; break;
      case 't': low = 514; high = 519; break;
      case 'u': low = 519; high = 521; break;
      case 'x': low = 521; high = 522; break;
      default: break;
    }
    break;
    case 10: switch (str[6]) {
      case 'a': low = 522; high = 529; break;
      case 'b': low = 529; high = 535; break;
      case 'c': low = 535; high = 537; break;
      case 'd': low = 537; high = 542; break;
      case 'e': low = 542; high = 549; break;
      case 'h': low = 549; high = 550; break;
      case 'i': low = 550; high = 556; break;
      case 'j': low = 556; high = 557; break;
      case 'k': low = 557; high = 559; break;
      case 'l': low = 559; high = 566; break;
      case 'm': low = 566; high = 569; break;
      case 'n': low = 569; high = 572; break;
      case 'o': low = 572; high = 576; break;
      case 'r': low = 576; high = 582; break;
      case 's': low = 582; high = 585; break;
      case 't': low = 585; high = 589; break;
      case 'u': low = 589; high = 590; break;
      case 'v': low = 590; high = 592; break;
      default: break;
    }
    break;
    case 11: switch (str[5]) {
      case 'a': low = 592; high = 596; break;
      case 'b': low = 596; high = 598; break;
      case 'c': low = 598; high = 600; break;
      case 'd': low = 600; high = 601; break;
      case 'e': low = 601; high = 606; break;
      case 'f': low = 606; high = 609; break;
      case 'i': low = 609; high = 612; break;
      case 'l': low = 612; high = 614; break;
      case 'm': low = 614; high = 615; break;
      case 'n': low = 615; high = 617; break;
      case 'o': low = 617; high = 622; break;
      case 'p': low = 622; high = 627; break;
      case 'r': low = 627; high = 629; break;
      case 's': low = 629; high = 632; break;
      case 't': low = 632; high = 633; break;
      case 'u': low = 633; high = 634; break;
      case 'w': low = 634; high = 635; break;
      case 'x': low = 635; high = 638; break;
      default: break;
    }
    break;
    case 12: switch (str[2]) {
      case 'a': low = 638; high = 639; break;
      case 'c': low = 639; high = 640; break;
      case 'd': low = 640; high = 642; break;
      case 'e': low = 642; high = 647; break;
      case 'g': low = 647; high = 649; break;
      case 'k': low = 649; high = 650; break;
      case 'l': low = 650; high = 652; break;
      case 'm': low = 652; high = 653; break;
      case 'n': low = 653; high = 657; break;
      case 'o': low = 657; high = 658; break;
      case 'r': low = 658; high = 660; break;
      case 't': low = 660; high = 661; break;
      case 'x': low = 661; high = 663; break;
      default: break;
    }
    break;
    case 13: switch (str[5]) {
      case 'a': low = 663; high = 664; break;
      case 'b': low = 664; high = 665; break;
      case 'c': low = 665; high = 667; break;
      case 'e': low = 667; high = 670; break;
      case 'm': low = 670; high = 671; break;
      case 'n': low = 671; high = 673; break;
      case 'o': low = 673; high = 674; break;
      case 'r': low = 674; high = 675; break;
      case 't': low = 675; high = 677; break;
      case 'u': low = 677; high = 679; break;
      default: break;
    }
    break;
    case 14: switch (str[0]) {
      case 'b': low = 679; high = 680; break;
      case 'f': low = 680; high = 682; break;
      case 'm': low = 682; high = 683; break;
      case 'p': low = 683; high = 684; break;
      case 'r': low = 684; high = 685; break;
      case 's': low = 685; high = 686; break;
      case 'v': low = 686; high = 687; break;
      case 'w': low = 687; high = 688; break;
      default: break;
    }
    break;
    case 15: low = 688; high = 689; break;
    case 16: low = 689; high = 690; break;
    default: break;
  }
  for (int i = low; i < high; i++) {
    if (!memcmp(str, option_hash_elems[i].name, len)) {
      return i;
    }
  }
  return -1;
}