// SDB-CGEN V2.6.2
#include <ctype.h>
#include <stdio.h>
#include <string.h>

struct kv { const char *name; const char *value; };
static const struct kv kvs[] = {
// gcc -DMAIN=1 kernel.c ; ./a.out > kernel.h
	{"#139", "DOSIGNAL"},
	{"#140", "SETSIGHANDLER"},
	{"#141", "INITTASK1"},
	{"#316", "GETFREEMEMINFO"},
	{"#327", "K327"},
	{"#329", "K329"},
	{"#339", "DIAGQUERY"},
	{"#340", "DIAGOUTPUT"},
	{"#343", "REGISTERWINOLDAPHOOK"},
	{"#344", "GETWINOLDAPHOOKS"},
	{"1", "FATALEXIT"},
	{"10", "LOCALSIZE"},
	{"100", "VALIDATECODESEGMENTS"},
	{"101", "NOHOOKDOSCALL"},
	{"102", "DOS3CALL"},
	{"103", "NETBIOSCALL"},
	{"104", "GETCODEINFO"},
	{"105", "GETEXEVERSION"},
	{"106", "SETSWAPAREASIZE"},
	{"107", "SETERRORMODE"},
	{"108", "STO"},
	{"109", "SBACK"},
	{"11", "LOCALHANDLE"},
	{"110", "PATCHCODEHANDLE"},
	{"111", "GLOBALWIRE"},
	{"112", "GLOBALUNWIRE"},
	{"113", "__AHSHIFT"},
	{"114", "__AHINCR"},
	{"115", "OUTPUTDEBUGSTRING"},
	{"116", "INITLIB"},
	{"117", "OLDYIELD"},
	{"118", "GETTASKQUEUEDS"},
	{"119", "GETTASKQUEUEES"},
	{"12", "LOCALFLAGS"},
	{"120", "UNDEFDYNLINK"},
	{"121", "LOCALSHRINK"},
	{"122", "ISTASKLOCKED"},
	{"123", "KBDRST"},
	{"124", "ENABLEKERNEL"},
	{"125", "DISABLEKERNEL"},
	{"126", "MEMORYFREED"},
	{"127", "GETPRIVATEPROFILEINT"},
	{"128", "GETPRIVATEPROFILESTRING"},
	{"129", "WRITEPRIVATEPROFILESTRING"},
	{"13", "LOCALCOMPACT"},
	{"130", "FILECDR"},
	{"131", "GETDOSENVIRONMENT"},
	{"132", "GETWINFLAGS"},
	{"133", "GETEXEPTR"},
	{"134", "GETWINDOWSDIRECTORY"},
	{"135", "GETSYSTEMDIRECTORY"},
	{"136", "GETDRIVETYPE"},
	{"137", "FATALAPPEXIT"},
	{"138", "GETHEAPSPACES"},
	{"14", "LOCALNOTIFY"},
	{"142", "GETPROFILESECTIONNAMES"},
	{"143", "GETPRIVATEPROFILESECTIONNAMES"},
	{"144", "CREATEDIRECTORY"},
	{"145", "REMOVEDIRECTORY"},
	{"146", "DELETEFILE"},
	{"147", "SETLASTERROR"},
	{"148", "GETLASTERROR"},
	{"149", "GETVERSIONEX"},
	{"15", "GLOBALALLOC"},
	{"150", "DIRECTEDYIELD"},
	{"151", "WINOLDAPCALL"},
	{"152", "GETNUMTASKS"},
	{"154", "GLOBALNOTIFY"},
	{"155", "GETTASKDS"},
	{"156", "LIMITEMSPAGES"},
	{"157", "GETCURPID"},
	{"158", "ISWINOLDAPTASK"},
	{"159", "GLOBALHANDLENORIP"},
	{"16", "GLOBALREALLOC"},
	{"160", "EMSCOPY"},
	{"161", "LOCALCOUNTFREE"},
	{"162", "LOCALHEAPSIZE"},
	{"163", "GLOBALLRUOLDEST"},
	{"164", "GLOBALLRUNEWEST"},
	{"165", "A20PROC"},
	{"166", "WINEXEC"},
	{"167", "GETEXPWINVER"},
	{"168", "DIRECTRESALLOC"},
	{"169", "GETFREESPACE"},
	{"17", "GLOBALFREE"},
	{"170", "ALLOCCSTODSALIAS"},
	{"171", "ALLOCDSTOCSALIAS"},
	{"172", "ALLOCALIAS"},
	{"173", "__ROMBIOS"},
	{"174", "__A000H"},
	{"175", "ALLOCSELECTOR"},
	{"176", "FREESELECTOR"},
	{"177", "PRESTOCHANGOSELECTOR"},
	{"178", "__WINFLAGS"},
	{"179", "__D000H"},
	{"18", "GLOBALLOCK"},
	{"180", "LONGPTRADD"},
	{"181", "__B000H"},
	{"182", "__B800H"},
	{"183", "__0000H"},
	{"184", "GLOBALDOSALLOC"},
	{"185", "GLOBALDOSFREE"},
	{"186", "GETSELECTORBASE"},
	{"187", "SETSELECTORBASE"},
	{"188", "GETSELECTORLIMIT"},
	{"189", "SETSELECTORLIMIT"},
	{"19", "GLOBALUNLOCK"},
	{"190", "__E000H"},
	{"191", "GLOBALPAGELOCK"},
	{"192", "GLOBALPAGEUNLOCK"},
	{"193", "__0040H"},
	{"194", "__F000H"},
	{"195", "__C000H"},
	{"196", "SELECTORACCESSRIGHTS"},
	{"197", "GLOBALFIX"},
	{"198", "GLOBALUNFIX"},
	{"199", "SETHANDLECOUNT"},
	{"2", "EXITKERNEL"},
	{"20", "GLOBALSIZE"},
	{"200", "VALIDATEFREESPACES"},
	{"201", "REPLACEINST"},
	{"202", "REGISTERPTRACE"},
	{"203", "DEBUGBREAK"},
	{"204", "SWAPRECORDING"},
	{"205", "CVWBREAK"},
	{"206", "ALLOCSELECTORARRAY"},
	{"207", "ISDBCSLEADBYTE"},
	{"208", "K208"},
	{"209", "K209"},
	{"21", "GLOBALHANDLE"},
	{"210", "K210"},
	{"211", "K211"},
	{"213", "K213"},
	{"214", "K214"},
	{"215", "K215"},
	{"216", "REGENUMKEY"},
	{"217", "REGOPENKEY"},
	{"218", "REGCREATEKEY"},
	{"219", "REGDELETEKEY"},
	{"22", "GLOBALFLAGS"},
	{"220", "REGCLOSEKEY"},
	{"221", "REGSETVALUE"},
	{"222", "REGDELETEVALUE"},
	{"223", "REGENUMVALUE"},
	{"224", "REGQUERYVALUE"},
	{"225", "REGQUERYVALUEEX"},
	{"226", "REGSETVALUEEX"},
	{"227", "REGFLUSHKEY"},
	{"228", "K228"},
	{"229", "K229"},
	{"23", "LOCKSEGMENT"},
	{"230", "GLOBALSMARTPAGELOCK"},
	{"231", "GLOBALSMARTPAGEUNLOCK"},
	{"232", "REGLOADKEY"},
	{"233", "REGUNLOADKEY"},
	{"234", "REGSAVEKEY"},
	{"235", "INVALIDATENLSCACHE"},
	{"236", "GETPRODUCTNAME"},
	{"237", "K237"},
	{"24", "UNLOCKSEGMENT"},
	{"25", "GLOBALCOMPACT"},
	{"26", "GLOBALFREEALL"},
	{"27", "GETMODULENAME"},
	{"28", "GLOBALMASTERHANDLE"},
	{"29", "YIELD"},
	{"3", "GETVERSION"},
	{"30", "WAITEVENT"},
	{"31", "POSTEVENT"},
	{"310", "LOCALHANDLEDELTA"},
	{"311", "GETSETKERNELDOSPROC"},
	{"314", "DEBUGDEFINESEGMENT"},
	{"315", "WRITEOUTPROFILES"},
	{"318", "FATALEXITHOOK"},
	{"319", "FLUSHCACHEDFILEHANDLE"},
	{"32", "SETPRIORITY"},
	{"320", "ISTASK"},
	{"323", "ISROMMODULE"},
	{"324", "LOGERROR"},
	{"325", "LOGPARAMERROR"},
	{"326", "ISROMFILE"},
	{"328", "_DEBUGOUTPUT"},
	{"33", "LOCKCURRENTTASK"},
	{"332", "THHOOK"},
	{"334", "ISBADREADPTR"},
	{"335", "ISBADWRITEPTR"},
	{"336", "ISBADCODEPTR"},
	{"337", "ISBADSTRINGPTR"},
	{"338", "HASGPHANDLER"},
	{"34", "SETTASKQUEUE"},
	{"341", "TOOLHELPHOOK"},
	{"342", "__GP"},
	{"345", "ISSHAREDSELECTOR"},
	{"346", "ISBADHUGEREADPTR"},
	{"347", "ISBADHUGEWRITEPTR"},
	{"348", "HMEMCPY"},
	{"349", "_HREAD"},
	{"35", "GETTASKQUEUE"},
	{"350", "_HWRITE"},
	{"351", "BUNNY_351"},
	{"352", "LSTRCATN"},
	{"353", "LSTRCPYN"},
	{"354", "GETAPPCOMPATFLAGS"},
	{"355", "GETWINDEBUGINFO"},
	{"356", "SETWINDEBUGINFO"},
	{"36", "GETCURRENTTASK"},
	{"360", "OPENFILEEX"},
	{"361", "PIGLET_361"},
	{"37", "GETCURRENTPDB"},
	{"38", "SETTASKSIGNALPROC"},
	{"39", "SETTASKSWITCHPROC"},
	{"4", "LOCALINIT"},
	{"40", "SETTASKINTERCHANGE"},
	{"406", "WRITEPRIVATEPROFILESTRUCT"},
	{"407", "GETPRIVATEPROFILESTRUCT"},
	{"41", "ENABLEDOS"},
	{"411", "GETCURRENTDIRECTORY"},
	{"412", "SETCURRENTDIRECTORY"},
	{"413", "FINDFIRSTFILE"},
	{"414", "FINDNEXTFILE"},
	{"415", "FINDCLOSE"},
	{"416", "WRITEPRIVATEPROFILESECTION"},
	{"417", "WRITEPROFILESECTION"},
	{"418", "GETPRIVATEPROFILESECTION"},
	{"419", "GETPROFILESECTION"},
	{"42", "DISABLEDOS"},
	{"420", "GETFILEATTRIBUTES"},
	{"421", "SETFILEATTRIBUTES"},
	{"422", "GETDISKFREESPACE"},
	{"43", "ISSCREENGRAB"},
	{"432", "FILETIMETOLOCALFILETIME"},
	{"44", "BUILDPDB"},
	{"45", "LOADMODULE"},
	{"46", "FREEMODULE"},
	{"47", "GETMODULEHANDLE"},
	{"48", "GETMODULEUSAGE"},
	{"49", "GETMODULEFILENAME"},
	{"491", "REGISTERSERVICEPROCESS"},
	{"5", "LOCALALLOC"},
	{"50", "GETPROCADDRESS"},
	{"51", "MAKEPROCINSTANCE"},
	{"513", "LOADLIBRARYEX32W"},
	{"514", "FREELIBRARY32W"},
	{"515", "GETPROCADDRESS32W"},
	{"516", "GETVDMPOINTER32W"},
	{"517", "CALLPROC32W"},
	{"518", "_CALLPROCEX32W"},
	{"52", "FREEPROCINSTANCE"},
	{"53", "CALLPROCINSTANCE"},
	{"54", "GETINSTANCEDATA"},
	{"55", "CATCH"},
	{"56", "THROW"},
	{"57", "GETPROFILEINT"},
	{"58", "GETPROFILESTRING"},
	{"59", "WRITEPROFILESTRING"},
	{"6", "LOCALREALLOC"},
	{"60", "FINDRESOURCE"},
	{"61", "LOADRESOURCE"},
	{"62", "LOCKRESOURCE"},
	{"627", "ISBADFLATREADWRITEPTR"},
	{"63", "FREERESOURCE"},
	{"64", "ACCESSRESOURCE"},
	{"65", "SIZEOFRESOURCE"},
	{"66", "ALLOCRESOURCE"},
	{"67", "SETRESOURCEHANDLER"},
	{"68", "INITATOMTABLE"},
	{"69", "FINDATOM"},
	{"7", "LOCALFREE"},
	{"70", "ADDATOM"},
	{"71", "DELETEATOM"},
	{"72", "GETATOMNAME"},
	{"73", "GETATOMHANDLE"},
	{"74", "OPENFILE"},
	{"75", "OPENPATHNAME"},
	{"76", "DELETEPATHNAME"},
	{"77", "ANSINEXT"},
	{"78", "ANSIPREV"},
	{"79", "ANSIUPPER"},
	{"8", "LOCALLOCK"},
	{"80", "ANSILOWER"},
	{"81", "_LCLOSE"},
	{"82", "_LREAD"},
	{"83", "_LCREAT"},
	{"84", "_LLSEEK"},
	{"85", "_LOPEN"},
	{"86", "_LWRITE"},
	{"87", "LSTRCMP"},
	{"88", "LSTRCPY"},
	{"89", "LSTRCAT"},
	{"9", "LOCALUNLOCK"},
	{"90", "LSTRLEN"},
	{"91", "INITTASK"},
	{"92", "GETTEMPDRIVE"},
	{"93", "GETCODEHANDLE"},
	{"94", "DEFINEHANDLETABLE"},
	{"95", "LOADLIBRARY"},
	{"96", "FREELIBRARY"},
	{"97", "GETTEMPFILENAME"},
	{"98", "GETLASTDISKCHANGE"},
	{"99", "GETLPERRMODE"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_kernel_foreach(GperfForeachCallback cb, void *user) {
  int i = 0; while (kvs[i].name) {
  cb (user, kvs[i].name, kvs[i].value);
  i++;}
  return 0;
}
const char *gperf_kernel_get(const char *s) {
  int i = 0; while (kvs[i].name) {
  if (!strcmp (s, kvs[i].name)) return kvs[i].value;
  i++;}
  return NULL;
}
#define sdb_hash_c_kernel(x,y) gperf_kernel_hash(x)
const unsigned int gperf_kernel_hash(const char *s) {
  int sum = strlen (s);
  while (*s) { sum += *s; s++; }
  return sum;
}
struct {const char *name;void *get;void *hash;void *foreach;} gperf_kernel = {
  .name = "kernel",
  .get = &gperf_kernel_get,
  .hash = &gperf_kernel_hash,
  .foreach = &gperf_kernel_foreach
};

#if MAIN
int main () {
	const char *s = ((char*(*)(char*))gperf_kernel.get)("foo");
	printf ("%s\n", s);
}
#endif
