// 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 setupx.c ; ./a.out > setupx.h
	{"1", "WEP"},
	{"10", "IPGETINTFIELD"},
	{"101", "GENINSTALL"},
	{"102", "GENWININITRENAME"},
	{"103", "GENFORMSTRWITHOUTPLACEHOLDERS"},
	{"104", "SETUPX"},
	{"105", "CFGSETUPMERGE"},
	{"106", "INITDEPENDANTLDIDS"},
	{"107", "CFGOBJFINDKEYCMD"},
	{"108", "GENSUREGSETVALUEEX"},
	{"11", "IPFINDNEXTLINE"},
	{"110", "GENINSTALLEX"},
	{"111", "GENCOPYLOGCONFIG2REG"},
	{"112", "SUGETSETSETUPFLAGS"},
	{"114", "CFGPARSELINE"},
	{"115", "CFGSETAUTOPROCESS"},
	{"116", "CFGOBJTOSTR"},
	{"117", "CFGLNTOOBJ"},
	{"118", "MATCHCMDEXT"},
	{"119", "IPFINDNEXTMATCHLINE"},
	{"12", "IPGETFILENAME"},
	{"120", "P_SETDEFAULTOPTION"},
	{"121", "CFGCLEANBOOT"},
	{"122", "CFGMATCHCMDEXT"},
	{"123", "CFGWASFILEUPDATED"},
	{"124", "AUTOMATCHCMDEXT"},
	{"125", "P_VALIDATEOC"},
	{"126", "GENMAPROOTREGSTR2KEY"},
	{"127", "P_CDROMOC"},
	{"128", "P_MEDIAOC"},
	{"13", "VCPQUEUECOPY"},
	{"130", "_SUFORMATMESSAGE"},
	{"131", "SUVFORMATMESSAGE"},
	{"132", "_SUFORMATMESSAGEBOX"},
	{"135", "SUHELP"},
	{"14", "NOAUTORUNWNDPROC"},
	{"140", "SUVERCONFLICT"},
	{"141", "SUVERCONFLICTINIT"},
	{"142", "SUVERCONFLICTTERM"},
	{"143", "SUCREATEEBD"},
	{"144", "SUCOPYTOEBD"},
	{"145", "SXISMSDOS7RUNNING"},
	{"15", "__DEBUGMSG"},
	{"150", "DS_INIT"},
	{"151", "DS_DESTROY"},
	{"152", "DS_SSYNCDRIVES"},
	{"153", "DS_GETDRIVEDATA"},
	{"154", "DS_ADDSECTION"},
	{"155", "DS_ENABLESECTION"},
	{"156", "DS_DISABLESECTION"},
	{"157", "DS_SETSWAPSIZE"},
	{"158", "DS_SETREQUIREDPAD"},
	{"159", "DS_SETAVAILABLEPAD"},
	{"16", "__ASSERTMSG"},
	{"160", "SXUPDATEDS"},
	{"17", "VCPQUEUEDELETE"},
	{"170", "SUSETMEM"},
	{"171", "WRITEDMFBOOTDATA"},
	{"18", "TPOPENFILE"},
	{"19", "TPCLOSEFILE"},
	{"2", "IPOPEN"},
	{"20", "TPOPENSECTION"},
	{"200", "VCPOPEN"},
	{"201", "VCPCLOSE"},
	{"202", "VCPDEFCALLBACKPROC"},
	{"203", "VCPENUMFILES"},
	{"204", "VCPQUEUERENAME"},
	{"205", "VSMGETSTRINGNAME"},
	{"206", "VSMSTRINGDELETE"},
	{"207", "VSMSTRINGADD"},
	{"208", "VSMGETSTRINGRAWNAME"},
	{"209", "IPSAVERESTOREPOSITION"},
	{"21", "TPCLOSESECTION"},
	{"210", "IPGETPROFILESTRING"},
	{"211", "IPOPENEX"},
	{"212", "IPOPENAPPENDEX"},
	{"213", "VCPUICALLBACKPROC"},
	{"214", "VCPADDMRUPATH"},
	{"22", "TPCOMMITSECTION"},
	{"23", "TPGETLINE"},
	{"24", "TPGETNEXTLINE"},
	{"25", "TPINSERTLINE"},
	{"26", "TPREPLACELINE"},
	{"27", "TPDELETELINE"},
	{"28", "TPMOVELINE"},
	{"29", "TPGETLINECONTENTS"},
	{"3", "IPOPENAPPEND"},
	{"30", "TPGETPRIVATEPROFILESTRING"},
	{"300", "DIBUILDCOMPATDRVLIST"},
	{"301", "DIBUILDCLASSDRVLIST"},
	{"302", "DIDESTROYDRIVERNODELIST"},
	{"303", "DICREATEDEVICEINFO"},
	{"304", "DIGETCLASSDEVS"},
	{"305", "DIDESTROYDEVICEINFOLIST"},
	{"306", "DIREMOVEDEVICE"},
	{"308", "DICALLCLASSINSTALLER"},
	{"309", "DICREATEDRIVERNODE"},
	{"31", "TPWRITEPRIVATEPROFILESTRING"},
	{"310", "DIDRAWMINIICON"},
	{"311", "DIGETCLASSBITMAPINDEX"},
	{"312", "DISELECTDEVICE"},
	{"313", "DIINSTALLDEVICE"},
	{"314", "DILOADCLASSICON"},
	{"315", "DIASKFOROEMDISK"},
	{"316", "DISPLAY_SETMODE"},
	{"317", "DISPLAY_CLASSINSTALLER"},
	{"318", "DICREATEDEVREGKEY"},
	{"319", "DIOPENDEVREGKEY"},
	{"32", "TPGETPROFILESTRING"},
	{"320", "DIINSTALLDRVSECTION"},
	{"321", "DIINSTALLCLASS"},
	{"322", "DIOPENCLASSREGKEY"},
	{"323", "DISPLAY_SETFONTSIZE"},
	{"324", "DISPLAY_OPENFONTSIZEKEY"},
	{"325", "DIBUILDCLASSDRVLISTFROMOLDINF"},
	{"326", "DIISTHERENEEDTOCOPY"},
	{"33", "CTLSETLDD"},
	{"333", "DICHANGESTATE"},
	{"34", "CTLGETLDD"},
	{"340", "GETFCTN"},
	{"341", "DIBUILDCLASSINFOLIST"},
	{"342", "DIDESTROYCLASSINFOLIST"},
	{"343", "DIGETDEVICECLASSINFO"},
	{"344", "DIDELETEDEVREGKEY"},
	{"35", "CTLFINDLDD"},
	{"350", "DISELECTOEMDRV"},
	{"351", "DIGETINFCLASS"},
	{"36", "CTLADDLDD"},
	{"360", "GENINFLCTODEVNODE"},
	{"361", "GETDOSMESSAGE"},
	{"362", "MOUSE_CLASSINSTALLER"},
	{"363", "SXCOMPAREDOSAPPVER"},
	{"365", "FCEGETRESDESOFFSET"},
	{"366", "FCEGETALLOCVALUE"},
	{"367", "FCEADDRESDES"},
	{"368", "FCEDELETERESDES"},
	{"369", "FCEINIT"},
	{"37", "CTLDELLDD"},
	{"370", "FCEGETRESDES"},
	{"371", "FCEGETFIRSTVALUE"},
	{"372", "FCEGETOTHERVALUE"},
	{"373", "FCEGETVALIDATEVALUE"},
	{"374", "FCEWRITETHISFORCEDCONFIGNOW"},
	{"375", "SUCREATEPROPERTYSHEETPAGE"},
	{"376", "SUDESTROYPROPERTYSHEETPAGE"},
	{"377", "SUPROPERTYSHEET"},
	{"38", "CTLGETLDDPATH"},
	{"380", "DIREADREGLOGCONF"},
	{"381", "DIREADREGCONF"},
	{"39", "SUREGCLOSEKEY"},
	{"390", "DIBUILDPOTENTIALDUPLICATESLIST"},
	{"395", "INITSUBSTRDATA"},
	{"396", "GETFIRSTSUBSTR"},
	{"397", "GETNEXTSUBSTR"},
	{"4", "IPCLOSE"},
	{"40", "SUREGCREATEKEY"},
	{"400", "BISFILEINVMM32"},
	{"401", "DIINSTALLDRIVERFILES"},
	{"405", "DIBUILDCLASSINFOLISTEX"},
	{"406", "DIGETCLASSDEVSEX"},
	{"407", "DICOPYREGSUBKEYVALUE"},
	{"41", "SUREGDELETEKEY"},
	{"410", "IPGETVERSIONSTRING"},
	{"411", "VCPEXPLAIN"},
	{"412", "DIBUILDDRIVERINDEX"},
	{"413", "DIADDSINGLEINFTODRVIDX"},
	{"414", "FCEGETFLAGS"},
	{"42", "SUREGDELETEVALUE"},
	{"43", "SUREGENUMKEY"},
	{"44", "SUREGENUMVALUE"},
	{"45", "SUREGFLUSH"},
	{"450", "UIMAKEDLGNONBOLD"},
	{"451", "UIDELETENONBOLDFONT"},
	{"46", "SUREGINIT"},
	{"47", "SUREGOPENKEY"},
	{"48", "SUREGQUERYVALUE"},
	{"49", "SUREGQUERYVALUE16"},
	{"5", "IPGETLONGFIELD"},
	{"50", "SUREGQUERYVALUEEX"},
	{"500", "SUEBDPAGE"},
	{"501", "SUOCPAGE"},
	{"502", "SXLISTSUBPROC"},
	{"503", "SXFILLLB"},
	{"504", "SXOCPAGEDLG"},
	{"506", "SXOCBATCHSETTINGS"},
	{"507", "SXOCFIXNEEDS"},
	{"508", "CTLSETLDDPATH"},
	{"509", "SXCALLOCPROC"},
	{"51", "SUREGSETVALUE"},
	{"52", "SUREGSETVALUE16"},
	{"520", "DIBUILDCLASSDRVINFOLIST"},
	{"521", "DIBUILDCOMPATDRVINFOLIST"},
	{"522", "DIDESTROYDRVINFOLIST"},
	{"523", "DICONVERTDRIVERINFOTODRIVERNODE"},
	{"525", "FIRSTBOOTMOVETODOSSTART"},
	{"526", "DOSOPTENABLECURCFG"},
	{"527", "INSTALLHINFSECTION"},
	{"528", "SXMAKEUNCPATH"},
	{"529", "SXISSBSSERVERFILE"},
	{"53", "SUREGSETVALUEEX"},
	{"530", "SXFINDBATCHFILES"},
	{"54", "SUREGSAVEKEY"},
	{"55", "SUREGLOADKEY"},
	{"56", "SUREGUNLOADKEY"},
	{"6", "IPGETSTRINGFIELD"},
	{"60", "DISKINFOFROMLDID"},
	{"600", "PIDCONSTRUCT"},
	{"601", "PIDVALIDATE"},
	{"61", "SUERRORTOIDS"},
	{"62", "TPWRITEPROFILESTRING"},
	{"63", "SURPLSETUP"},
	{"64", "SUSTORELDIDPATH"},
	{"65", "WILDCARDSTRCMPI"},
	{"7", "IPFINDFIRSTLINE"},
	{"8", "IPGETLINECOUNT"},
	{"9", "IPGETFIELDCOUNT"},
  {NULL, NULL}
};
typedef int (*GperfForeachCallback)(void *user, const char *k, const char *v);
int gperf_setupx_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_setupx_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_setupx(x,y) gperf_setupx_hash(x)
const unsigned int gperf_setupx_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_setupx = {
  .name = "setupx",
  .get = &gperf_setupx_get,
  .hash = &gperf_setupx_hash,
  .foreach = &gperf_setupx_foreach
};

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