// Code generated by 'ccgo -o /home/jnml/src/modernc.org/tcl/internal/tcltest/tcltest_windows_386.go -D__printf__=printf -all-errors -err-trace -replace-fd-zero __ccgo_fd_zero -replace-tcl-default-double-rounding _ccgo_tcl_default_double_rounding -replace-tcl-ieee-double-rounding _ccgo_tcl_ieee_double_rounding -trace-translation-units ../generic/tclOOStubLib.c ../generic/tclStubLib.c ../generic/tclTomMathStubLib.c -lmodernc.org/tcl/lib -D_ATL_XP_TARGETING -DMP_FIXED_CUTOFFS -DMP_NO_STDINT -I/home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/compat/zlib -I/home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/generic -DTCL_TOMMATH -DMP_PREC=4 -I/home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/libtommath -I/home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/win -DTCL_BROKEN_MAINARGS -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DSTDC_HEADERS=1 -DTCL_CFGVAL_ENCODING="cp1252" -DSTATIC_BUILD=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DMODULE_SCOPE=extern -DHAVE_NO_SEH=1 -DHAVE_CAST_TO_UNION=1 -DHAVE_ZLIB=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DHAVE_WSPIAPI_H=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 -DBUILD_tcl -DTCL_TEST -DUNICODE -D_UNICODE -UHAVE_CAST_TO_UNION /home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/generic/tclTest.c /home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/generic/tclTestObj.c /home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/generic/tclTestProcBodyObj.c /home/jnml/src/modernc.org/tcl/testdata/tcl8.6.10/generic/tclThreadTest.c tclWinTest.c tclAppInit.c', DO NOT EDIT.

package main

import (
	"math"
	"reflect"
	"sync/atomic"
	"unsafe"

	"modernc.org/libc"
	"modernc.org/tcl/lib"
)

var _ = math.Pi
var _ reflect.Kind
var _ atomic.Value
var _ unsafe.Pointer

func main() { libc.Start(main1) }

// Positions to pass to Tcl_QueueEvent:

const ( /* tcl.h:1387:1: */
	TCL_QUEUE_TAIL = 0
	TCL_QUEUE_HEAD = 1
	TCL_QUEUE_MARK = 2
)

// The following flags determine whether the blockModeProc above should set
// the channel into blocking or nonblocking mode. They are passed as arguments
// to the blockModeProc function in the above structure.

//----------------------------------------------------------------------------
// Enum for different types of file paths.

const ( /* tcl.h:1609:1: */
	TCL_PATH_ABSOLUTE        = 0
	TCL_PATH_RELATIVE        = 1
	TCL_PATH_VOLUME_RELATIVE = 2
)

//----------------------------------------------------------------------------
// When a TCL command returns, the interpreter contains a result from the
// command. Programmers are strongly encouraged to use one of the functions
// Tcl_GetObjResult() or Tcl_GetStringResult() to read the interpreter's
// result. See the SetResult man page for details. Besides this result, the
// command function returns an integer code, which is one of the following:
//
// TCL_OK		Command completed normally; the interpreter's result
//			contains the command's result.
// TCL_ERROR		The command couldn't be completed successfully; the
//			interpreter's result describes what went wrong.
// TCL_RETURN		The command requests that the current function return;
//			the interpreter's result contains the function's
//			return value.
// TCL_BREAK		The command requests that the innermost loop be
//			exited; the interpreter's result is meaningless.
// TCL_CONTINUE		Go on to the next iteration of the current loop; the
//			interpreter's result is meaningless.

//----------------------------------------------------------------------------
// Flags to control what substitutions are performed by Tcl_SubstObj():

// Argument descriptors for math function callbacks in expressions:

const ( /* tcl.h:690:1: */
	TCL_INT      = 0
	TCL_DOUBLE   = 1
	TCL_EITHER   = 2
	TCL_WIDE_INT = 3
)

// TIP #268.
// Values for the selection mode, i.e the package require preferences.

const ( /* tclInt.h:1729:1: */
	PKG_PREFER_LATEST = 0
	PKG_PREFER_STABLE = 1
)

// Macros that use the TSD-ekeko.

// Macros for script cancellation support (TIP #285).

// Macros for splicing into and out of doubly linked lists. They assume
// existence of struct items 'prevPtr' and 'nextPtr'.
//
// a = element to add or remove.
// b = list head.
//
// TclSpliceIn adds to the head of the list.

// EvalFlag bits for Interp structures:
//
// TCL_ALLOW_EXCEPTIONS	1 means it's OK for the script to terminate with a
//			code other than TCL_OK or TCL_ERROR; 0 means codes
//			other than these should be turned into errors.

// Flag bits for Interp structures:
//
// DELETED:		Non-zero means the interpreter has been deleted:
//			don't process any more commands for it, and destroy
//			the structure as soon as all nested invocations of
//			Tcl_Eval are done.
// ERR_ALREADY_LOGGED:	Non-zero means information has already been logged in
//			iPtr->errorInfo for the current Tcl_Eval instance, so
//			Tcl_Eval needn't log it (used to implement the "error
//			message log" command).
// DONT_COMPILE_CMDS_INLINE: Non-zero means that the bytecode compiler should
//			not compile any commands into an inline sequence of
//			instructions. This is set 1, for example, when command
//			traces are requested.
// RAND_SEED_INITIALIZED: Non-zero means that the randSeed value of the interp
//			has not be initialized. This is set 1 when we first
//			use the rand() or srand() functions.
// SAFE_INTERP:		Non zero means that the current interp is a safe
//			interp (i.e. it has only the safe commands installed,
//			less privilege than a regular interp).
// INTERP_DEBUG_FRAME:	Used for switching on various extra interpreter
//			debug/info mechanisms (e.g. info frame eval/uplevel
//			tracing) which are performance intensive.
// INTERP_TRACE_IN_PROGRESS: Non-zero means that an interp trace is currently
//			active; so no further trace callbacks should be
//			invoked.
// INTERP_ALTERNATE_WRONG_ARGS: Used for listing second and subsequent forms
//			of the wrong-num-args string in Tcl_WrongNumArgs.
//			Makes it append instead of replacing and uses
//			different intermediate text.
// CANCELED:		Non-zero means that the script in progress should be
//			canceled as soon as possible. This can be checked by
//			extensions (and the core itself) by calling
//			Tcl_Canceled and checking if TCL_ERROR is returned.
//			This is a one-shot flag that is reset immediately upon
//			being detected; however, if the TCL_CANCEL_UNWIND flag
//			is set Tcl_Canceled will continue to report that the
//			script in progress has been canceled thereby allowing
//			the evaluation stack for the interp to be fully
//			unwound.
//
// WARNING: For the sake of some extensions that have made use of former
// internal values, do not re-use the flag values 2 (formerly ERR_IN_PROGRESS)
// or 8 (formerly ERROR_CODE_SET).

// Maximum number of levels of nesting permitted in Tcl commands (used to
// catch infinite recursion).

// The macro below is used to modify a "char" value (e.g. by casting it to an
// unsigned character) so that it can be used safely with macros such as
// isspace.

// This macro is used to properly align the memory allocated by Tcl, giving
// the same alignment as the native malloc.

// This macro is used to determine the offset needed to safely allocate any
// data structure in memory. Given a starting offset or size, it "rounds up"
// or "aligns" the offset to the next 8-byte boundary so that any data
// structure can be placed at the resulting offset without fear of an
// alignment error.
//
// WARNING!! DO NOT USE THIS MACRO TO ALIGN POINTERS: it will produce the
// wrong result on platforms that allocate addresses that are divisible by 4
// or 2. Only use it for offsets or sizes.
//
// This macro is only used by tclCompile.c in the core (Bug 926445). It
// however not be made file static, as extensions that touch bytecodes
// (notably tbcload) require it.

// The following enum values are used to specify the runtime platform setting
// of the tclPlatform variable.

const ( /* tclInt.h:2318:1: */
	TCL_PLATFORM_UNIX    = 0 // Any Unix-like OS.
	TCL_PLATFORM_WINDOWS = 2
)

// The following enum values are used to indicate the translation of a Tcl
// channel. Declared here so that each platform can define
// TCL_PLATFORM_TRANSLATION to the native translation on that platform.

const ( /* tclInt.h:2329:1: */
	TCL_TRANSLATE_AUTO = 0 // Eol == \r, \n and \r\n.
	TCL_TRANSLATE_CR   = 1 // Eol == \r.
	TCL_TRANSLATE_LF   = 2 // Eol == \n.
	TCL_TRANSLATE_CRLF = 3
)

// The "globParameters" argument of the function TclGlob is an or'ed
// combination of the following values:

const ( /* tclInt.h:2564:1: */
	TCL_PATH_DIRNAME   = 0
	TCL_PATH_TAIL      = 1
	TCL_PATH_EXTENSION = 2
	TCL_PATH_ROOT      = 3
)

const ( /* tclInt.h:2738:1: */
	TCL_EMPTYSTRING_UNKNOWN = -1
	TCL_EMPTYSTRING_NO      = 0
	TCL_EMPTYSTRING_YES     = 1
)

const ( /* accctrl.h:127:3: */
	NOT_USED_ACCESS   = 0
	GRANT_ACCESS      = 1
	SET_ACCESS        = 2
	DENY_ACCESS       = 3
	REVOKE_ACCESS     = 4
	SET_AUDIT_SUCCESS = 5
	SET_AUDIT_FAILURE = 6
)

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

const ( /* accctrl.h:22:3: */
	SE_UNKNOWN_OBJECT_TYPE     = 0
	SE_FILE_OBJECT             = 1
	SE_SERVICE                 = 2
	SE_PRINTER                 = 3
	SE_REGISTRY_KEY            = 4
	SE_LMSHARE                 = 5
	SE_KERNEL_OBJECT           = 6
	SE_WINDOW_OBJECT           = 7
	SE_DS_OBJECT               = 8
	SE_DS_OBJECT_ALL           = 9
	SE_PROVIDER_DEFINED_OBJECT = 10
	SE_WMIGUID_OBJECT          = 11
	SE_REGISTRY_WOW64_32KEY    = 12
)

const ( /* accctrl.h:38:3: */
	TRUSTEE_IS_UNKNOWN          = 0
	TRUSTEE_IS_USER             = 1
	TRUSTEE_IS_GROUP            = 2
	TRUSTEE_IS_DOMAIN           = 3
	TRUSTEE_IS_ALIAS            = 4
	TRUSTEE_IS_WELL_KNOWN_GROUP = 5
	TRUSTEE_IS_DELETED          = 6
	TRUSTEE_IS_INVALID          = 7
	TRUSTEE_IS_COMPUTER         = 8
)

const ( /* accctrl.h:433:3: */
	ProgressInvokeNever       = 1
	ProgressInvokeEveryObject = 2
	ProgressInvokeOnError     = 3
	ProgressCancelOperation   = 4
	ProgressRetryOperation    = 5
)
const ( /* accctrl.h:49:3: */
	TRUSTEE_IS_SID              = 0
	TRUSTEE_IS_NAME             = 1
	TRUSTEE_BAD_FORM            = 2
	TRUSTEE_IS_OBJECTS_AND_SID  = 3
	TRUSTEE_IS_OBJECTS_AND_NAME = 4
)

const ( /* accctrl.h:57:3: */
	NO_MULTIPLE_TRUSTEE    = 0
	TRUSTEE_IS_IMPERSONATE = 1
)

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

const ( /* combaseapi.h:138:1: */
	REGCLS_SINGLEUSE      = 0
	REGCLS_MULTIPLEUSE    = 1
	REGCLS_MULTI_SEPARATE = 2
	REGCLS_SUSPENDED      = 4
	REGCLS_SURROGATE      = 8
)

const ( /* combaseapi.h:149:1: */
	COINITBASE_MULTITHREADED = 0
)

const ( /* combaseapi.h:214:1: */
	SMEXF_SERVER  = 1
	SMEXF_HANDLER = 2
)

const ( /* combaseapi.h:318:1: */
	COWAIT_DEFAULT                  = 0
	COWAIT_WAITALL                  = 1
	COWAIT_ALERTABLE                = 2
	COWAIT_INPUTAVAILABLE           = 4
	COWAIT_DISPATCH_CALLS           = 8
	COWAIT_DISPATCH_WINDOW_MESSAGES = 16
)

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

const ( /* memoryapi.h:18:3: */
	LowMemoryResourceNotification  = 0
	HighMemoryResourceNotification = 1
)

const ( /* minwinbase.h:100:3: */
	FindExSearchNameMatch          = 0
	FindExSearchLimitToDirectories = 1
	FindExSearchLimitToDevices     = 2
	FindExSearchMaxSearchOp        = 3
)

const ( /* minwinbase.h:107:3: */
	GetFileExInfoStandard = 0
	GetFileExMaxInfoLevel = 1
)

const ( /* minwinbase.h:91:3: */
	FindExInfoStandard     = 0
	FindExInfoBasic        = 1
	FindExInfoMaxInfoLevel = 2
)

const ( /* msxml.h:241:3: */
	NODE_INVALID                = 0
	NODE_ELEMENT                = 1
	NODE_ATTRIBUTE              = 2
	NODE_TEXT                   = 3
	NODE_CDATA_SECTION          = 4
	NODE_ENTITY_REFERENCE       = 5
	NODE_ENTITY                 = 6
	NODE_PROCESSING_INSTRUCTION = 7
	NODE_COMMENT                = 8
	NODE_DOCUMENT               = 9
	NODE_DOCUMENT_TYPE          = 10
	NODE_DOCUMENT_FRAGMENT      = 11
	NODE_NOTATION               = 12
)

const ( /* msxml.h:247:3: */
	XMLELEMTYPE_ELEMENT  = 0
	XMLELEMTYPE_TEXT     = 1
	XMLELEMTYPE_COMMENT  = 2
	XMLELEMTYPE_DOCUMENT = 3
	XMLELEMTYPE_DTD      = 4
	XMLELEMTYPE_PI       = 5
	XMLELEMTYPE_OTHER    = 6
)

const ( /* oaidl.h:284:1: */
	SF_ERROR    = 10
	SF_I1       = 16
	SF_I2       = 2
	SF_I4       = 3
	SF_I8       = 20
	SF_BSTR     = 8
	SF_UNKNOWN  = 13
	SF_DISPATCH = 9
	SF_VARIANT  = 12
	SF_RECORD   = 36
	SF_HAVEIID  = 32781
)

const ( /* oaidl.h:2853:1: */
	DESCKIND_NONE           = 0
	DESCKIND_FUNCDESC       = 1
	DESCKIND_VARDESC        = 2
	DESCKIND_TYPECOMP       = 3
	DESCKIND_IMPLICITAPPOBJ = 4
	DESCKIND_MAX            = 5
)

// ****************************************************************************
//
// ITypeLib interface

const ( /* oaidl.h:4284:1: */
	SYS_WIN16 = 0
	SYS_WIN32 = 1
	SYS_MAC   = 2
	SYS_WIN64 = 3
)

const ( /* oaidl.h:4291:1: */
	LIBFLAG_FRESTRICTED   = 1
	LIBFLAG_FCONTROL      = 2
	LIBFLAG_FHIDDEN       = 4
	LIBFLAG_FHASDISKIMAGE = 8
)

const ( /* oaidl.h:4950:1: */
	CHANGEKIND_ADDMEMBER        = 0
	CHANGEKIND_DELETEMEMBER     = 1
	CHANGEKIND_SETNAMES         = 2
	CHANGEKIND_SETDOCUMENTATION = 3
	CHANGEKIND_GENERAL          = 4
	CHANGEKIND_INVALIDATE       = 5
	CHANGEKIND_CHANGEFAILED     = 6
	CHANGEKIND_MAX              = 7
)
const ( /* oaidl.h:528:1: */
	TKIND_ENUM      = 0
	TKIND_RECORD    = 1
	TKIND_MODULE    = 2
	TKIND_INTERFACE = 3
	TKIND_DISPATCH  = 4
	TKIND_COCLASS   = 5
	TKIND_ALIAS     = 6
	TKIND_UNION     = 7
	TKIND_MAX       = 8
)

const ( /* oaidl.h:672:1: */
	CC_FASTCALL   = 0
	CC_CDECL      = 1
	CC_MSCPASCAL  = 2
	CC_PASCAL     = 2
	CC_MACPASCAL  = 3
	CC_STDCALL    = 4
	CC_FPFASTCALL = 5
	CC_SYSCALL    = 6
	CC_MPWCDECL   = 7
	CC_MPWPASCAL  = 8
	CC_MAX        = 9
)

const ( /* oaidl.h:686:1: */
	FUNC_VIRTUAL     = 0
	FUNC_PUREVIRTUAL = 1
	FUNC_NONVIRTUAL  = 2
	FUNC_STATIC      = 3
	FUNC_DISPATCH    = 4
)

const ( /* oaidl.h:694:1: */
	INVOKE_FUNC           = 1
	INVOKE_PROPERTYGET    = 2
	INVOKE_PROPERTYPUT    = 4
	INVOKE_PROPERTYPUTREF = 8
)

const ( /* oaidl.h:717:1: */
	VAR_PERINSTANCE = 0
	VAR_STATIC      = 1
	VAR_CONST       = 2
	VAR_DISPATCH    = 3
)

const ( /* oaidl.h:746:1: */
	TYPEFLAG_FAPPOBJECT     = 1
	TYPEFLAG_FCANCREATE     = 2
	TYPEFLAG_FLICENSED      = 4
	TYPEFLAG_FPREDECLID     = 8
	TYPEFLAG_FHIDDEN        = 16
	TYPEFLAG_FCONTROL       = 32
	TYPEFLAG_FDUAL          = 64
	TYPEFLAG_FNONEXTENSIBLE = 128
	TYPEFLAG_FOLEAUTOMATION = 256
	TYPEFLAG_FRESTRICTED    = 512
	TYPEFLAG_FAGGREGATABLE  = 1024
	TYPEFLAG_FREPLACEABLE   = 2048
	TYPEFLAG_FDISPATCHABLE  = 4096
	TYPEFLAG_FREVERSEBIND   = 8192
	TYPEFLAG_FPROXY         = 16384
)

const ( /* oaidl.h:764:1: */
	FUNCFLAG_FRESTRICTED       = 1
	FUNCFLAG_FSOURCE           = 2
	FUNCFLAG_FBINDABLE         = 4
	FUNCFLAG_FREQUESTEDIT      = 8
	FUNCFLAG_FDISPLAYBIND      = 16
	FUNCFLAG_FDEFAULTBIND      = 32
	FUNCFLAG_FHIDDEN           = 64
	FUNCFLAG_FUSESGETLASTERROR = 128
	FUNCFLAG_FDEFAULTCOLLELEM  = 256
	FUNCFLAG_FUIDEFAULT        = 512
	FUNCFLAG_FNONBROWSABLE     = 1024
	FUNCFLAG_FREPLACEABLE      = 2048
	FUNCFLAG_FIMMEDIATEBIND    = 4096
)

const ( /* oaidl.h:780:1: */
	VARFLAG_FREADONLY        = 1
	VARFLAG_FSOURCE          = 2
	VARFLAG_FBINDABLE        = 4
	VARFLAG_FREQUESTEDIT     = 8
	VARFLAG_FDISPLAYBIND     = 16
	VARFLAG_FDEFAULTBIND     = 32
	VARFLAG_FHIDDEN          = 64
	VARFLAG_FRESTRICTED      = 128
	VARFLAG_FDEFAULTCOLLELEM = 256
	VARFLAG_FUIDEFAULT       = 512
	VARFLAG_FNONBROWSABLE    = 1024
	VARFLAG_FREPLACEABLE     = 2048
	VARFLAG_FIMMEDIATEBIND   = 4096
)

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

const ( /* objbase.h:16:1: */
	COINIT_APARTMENTTHREADED = 2
	COINIT_MULTITHREADED     = 0
	COINIT_DISABLE_OLE1DDE   = 4
	COINIT_SPEED_OVER_MEMORY = 8
)

const ( /* objbase.h:87:1: */
	SD_LAUNCHPERMISSIONS  = 0
	SD_ACCESSPERMISSIONS  = 1
	SD_LAUNCHRESTRICTIONS = 2
	SD_ACCESSRESTRICTIONS = 3
)
const ( /* objidl.h:11100:1: */
	ADVF_NODATA            = 1
	ADVF_PRIMEFIRST        = 2
	ADVF_ONLYONCE          = 4
	ADVF_DATAONSTOP        = 64
	ADVFCACHE_NOHANDLER    = 8
	ADVFCACHE_FORCEBUILTIN = 16
	ADVFCACHE_ONSAVE       = 32
)
const ( /* objidl.h:11357:1: */
	TYMED_HGLOBAL  = 1
	TYMED_FILE     = 2
	TYMED_ISTREAM  = 4
	TYMED_ISTORAGE = 8
	TYMED_GDI      = 16
	TYMED_MFPICT   = 32
	TYMED_ENHMF    = 64
	TYMED_NULL     = 0
)
const ( /* objidl.h:12272:1: */
	DATADIR_GET = 1
	DATADIR_SET = 2
)
const ( /* objidl.h:12728:1: */
	CALLTYPE_TOPLEVEL             = 1
	CALLTYPE_NESTED               = 2
	CALLTYPE_ASYNC                = 3
	CALLTYPE_TOPLEVEL_CALLPENDING = 4
	CALLTYPE_ASYNC_CALLPENDING    = 5
)
const ( /* objidl.h:12735:1: */
	SERVERCALL_ISHANDLED  = 0
	SERVERCALL_REJECTED   = 1
	SERVERCALL_RETRYLATER = 2
)
const ( /* objidl.h:12740:1: */
	PENDINGTYPE_TOPLEVEL = 1
	PENDINGTYPE_NESTED   = 2
)
const ( /* objidl.h:12744:1: */
	PENDINGMSG_CANCELCALL     = 0
	PENDINGMSG_WAITNOPROCESS  = 1
	PENDINGMSG_WAITDEFPROCESS = 2
)

const ( /* objidl.h:14295:1: */
	ServerApplication  = 0
	LibraryApplication = 1
)
const ( /* objidl.h:14299:1: */
	IdleShutdown   = 0
	ForcedShutdown = 1
)
const ( /* objidl.h:7990:1: */
	BIND_MAYBOTHERUSER     = 1
	BIND_JUSTTESTEXISTENCE = 2
)
const ( /* objidl.h:9048:1: */
	MKSYS_NONE             = 0
	MKSYS_GENERICCOMPOSITE = 1
	MKSYS_FILEMONIKER      = 2
	MKSYS_ANTIMONIKER      = 3
	MKSYS_ITEMMONIKER      = 4
	MKSYS_POINTERMONIKER   = 5
	MKSYS_CLASSMONIKER     = 7
	MKSYS_OBJREFMONIKER    = 8
	MKSYS_SESSIONMONIKER   = 9
	MKSYS_LUAMONIKER       = 10
)
const ( /* objidl.h:9060:1: */
	MKRREDUCE_ONE         = 196608
	MKRREDUCE_TOUSER      = 131072
	MKRREDUCE_THROUGHUSER = 65536
	MKRREDUCE_ALL         = 0
)

const ( /* objidlbase.h:1222:1: */
	EXTCONN_STRONG   = 1
	EXTCONN_WEAK     = 2
	EXTCONN_CALLABLE = 4
)

const ( /* objidlbase.h:2106:1: */
	STGTY_STORAGE   = 1
	STGTY_STREAM    = 2
	STGTY_LOCKBYTES = 3
	STGTY_PROPERTY  = 4
)

const ( /* objidlbase.h:2113:1: */
	STREAM_SEEK_SET = 0
	STREAM_SEEK_CUR = 1
	STREAM_SEEK_END = 2
)

const ( /* objidlbase.h:2119:1: */
	LOCK_WRITE     = 1
	LOCK_EXCLUSIVE = 2
	LOCK_ONLYONCE  = 4
)

const ( /* objidlbase.h:3999:1: */
	EOAC_NONE              = 0
	EOAC_MUTUAL_AUTH       = 1
	EOAC_STATIC_CLOAKING   = 32
	EOAC_DYNAMIC_CLOAKING  = 64
	EOAC_ANY_AUTHORITY     = 128
	EOAC_MAKE_FULLSIC      = 256
	EOAC_DEFAULT           = 2048
	EOAC_SECURE_REFS       = 2
	EOAC_ACCESS_CONTROL    = 4
	EOAC_APPID             = 8
	EOAC_DYNAMIC           = 16
	EOAC_REQUIRE_FULLSIC   = 512
	EOAC_AUTO_IMPERSONATE  = 1024
	EOAC_NO_CUSTOM_MARSHAL = 8192
	EOAC_DISABLE_AAA       = 4096
)

const ( /* objidlbase.h:4353:1: */
	COMBND_RPCTIMEOUT      = 1
	COMBND_SERVER_LOCALITY = 2
	COMBND_RESERVED1       = 4
)

const ( /* objidlbase.h:4359:1: */
	SERVER_LOCALITY_PROCESS_LOCAL = 0
	SERVER_LOCALITY_MACHINE_LOCAL = 1
	SERVER_LOCALITY_REMOTE        = 2
)

const ( /* objidlbase.h:4483:1: */
	COMGLB_EXCEPTION_HANDLING     = 1
	COMGLB_APPID                  = 2
	COMGLB_RPC_THREADPOOL_SETTING = 3
	COMGLB_RO_SETTINGS            = 4
	COMGLB_UNMARSHALING_POLICY    = 5
)

const ( /* objidlbase.h:4491:1: */
	COMGLB_EXCEPTION_HANDLE             = 0
	COMGLB_EXCEPTION_DONOT_HANDLE_FATAL = 1
	COMGLB_EXCEPTION_DONOT_HANDLE       = 1
	COMGLB_EXCEPTION_DONOT_HANDLE_ANY   = 2
)

const ( /* objidlbase.h:4498:1: */
	COMGLB_RPC_THREADPOOL_SETTING_DEFAULT_POOL = 0
	COMGLB_RPC_THREADPOOL_SETTING_PRIVATE_POOL = 1
)

const ( /* objidlbase.h:4503:1: */
	COMGLB_STA_MODALLOOP_REMOVE_TOUCH_MESSAGES                    = 1
	COMGLB_STA_MODALLOOP_SHARED_QUEUE_REMOVE_INPUT_MESSAGES       = 2
	COMGLB_STA_MODALLOOP_SHARED_QUEUE_DONOT_REMOVE_INPUT_MESSAGES = 4
	COMGLB_FAST_RUNDOWN                                           = 8
	COMGLB_RESERVED1                                              = 16
	COMGLB_RESERVED2                                              = 32
	COMGLB_RESERVED3                                              = 64
	COMGLB_STA_MODALLOOP_SHARED_QUEUE_REORDER_POINTER_MESSAGES    = 128
)

const ( /* objidlbase.h:4514:1: */
	COMGLB_UNMARSHALING_POLICY_NORMAL = 0
	COMGLB_UNMARSHALING_POLICY_STRONG = 1
	COMGLB_UNMARSHALING_POLICY_HYBRID = 2
)

// ****************************************************************************
//
// IAsyncManager interface

const ( /* objidlbase.h:5508:1: */
	DCOM_NONE          = 0
	DCOM_CALL_COMPLETE = 1
	DCOM_CALL_CANCELED = 2
)

const ( /* objidlbase.h:6915:1: */
	APTTYPEQUALIFIER_NONE               = 0
	APTTYPEQUALIFIER_IMPLICIT_MTA       = 1
	APTTYPEQUALIFIER_NA_ON_MTA          = 2
	APTTYPEQUALIFIER_NA_ON_STA          = 3
	APTTYPEQUALIFIER_NA_ON_IMPLICIT_MTA = 4
	APTTYPEQUALIFIER_NA_ON_MAINSTA      = 5
	APTTYPEQUALIFIER_APPLICATION_STA    = 6
)

const ( /* objidlbase.h:6925:1: */
	APTTYPE_CURRENT = -1
	APTTYPE_STA     = 0
	APTTYPE_MTA     = 1
	APTTYPE_NA      = 2
	APTTYPE_MAINSTA = 3
)

const ( /* objidlbase.h:6935:1: */
	THDTYPE_BLOCKMESSAGES   = 0
	THDTYPE_PROCESSMESSAGES = 1
)

const ( /* objidlbase.h:7232:1: */
	CO_MARSHALING_SOURCE_IS_APP_CONTAINER = 0
)

const ( /* oleauto.h:590:1: */
	REGKIND_DEFAULT  = 0
	REGKIND_REGISTER = 1
	REGKIND_NONE     = 2
)

const ( /* oleidl.h:1229:1: */
	OLEGETMONIKER_ONLYIFTHERE = 1
	OLEGETMONIKER_FORCEASSIGN = 2
	OLEGETMONIKER_UNASSIGN    = 3
	OLEGETMONIKER_TEMPFORUSER = 4
)

const ( /* oleidl.h:1236:1: */
	OLEWHICHMK_CONTAINER = 1
	OLEWHICHMK_OBJREL    = 2
	OLEWHICHMK_OBJFULL   = 3
)

const ( /* oleidl.h:1242:1: */
	USERCLASSTYPE_FULL    = 1
	USERCLASSTYPE_SHORT   = 2
	USERCLASSTYPE_APPNAME = 3
)

const ( /* oleidl.h:1248:1: */
	OLEMISC_RECOMPOSEONRESIZE            = 1
	OLEMISC_ONLYICONIC                   = 2
	OLEMISC_INSERTNOTREPLACE             = 4
	OLEMISC_STATIC                       = 8
	OLEMISC_CANTLINKINSIDE               = 16
	OLEMISC_CANLINKBYOLE1                = 32
	OLEMISC_ISLINKOBJECT                 = 64
	OLEMISC_INSIDEOUT                    = 128
	OLEMISC_ACTIVATEWHENVISIBLE          = 256
	OLEMISC_RENDERINGISDEVICEINDEPENDENT = 512
	OLEMISC_INVISIBLEATRUNTIME           = 1024
	OLEMISC_ALWAYSRUN                    = 2048
	OLEMISC_ACTSLIKEBUTTON               = 4096
	OLEMISC_ACTSLIKELABEL                = 8192
	OLEMISC_NOUIACTIVATE                 = 16384
	OLEMISC_ALIGNABLE                    = 32768
	OLEMISC_SIMPLEFRAME                  = 65536
	OLEMISC_SETCLIENTSITEFIRST           = 131072
	OLEMISC_IMEMODE                      = 262144
	OLEMISC_IGNOREACTIVATEWHENVISIBLE    = 524288
	OLEMISC_WANTSTOMENUMERGE             = 1048576
	OLEMISC_SUPPORTSMULTILEVELUNDO       = 2097152
)
const ( /* oleidl.h:1272:1: */
	OLECLOSE_SAVEIFDIRTY = 0
	OLECLOSE_NOSAVE      = 1
	OLECLOSE_PROMPTSAVE  = 2
)
const ( /* oleidl.h:1792:1: */
	OLERENDER_NONE   = 0
	OLERENDER_DRAW   = 1
	OLERENDER_FORMAT = 2
	OLERENDER_ASIS   = 3
)

const ( /* oleidl.h:1934:1: */
	OLEUPDATE_ALWAYS = 1
	OLEUPDATE_ONCALL = 3
)

const ( /* oleidl.h:1942:1: */
	OLELINKBIND_EVENIFCLASSDIFF = 1
)

const ( /* oleidl.h:2225:1: */
	BINDSPEED_INDEFINITE = 1
	BINDSPEED_MODERATE   = 2
	BINDSPEED_IMMEDIATE  = 3
)

const ( /* oleidl.h:2231:1: */
	OLECONTF_EMBEDDINGS    = 1
	OLECONTF_LINKS         = 2
	OLECONTF_OTHERS        = 4
	OLECONTF_ONLYUSER      = 8
	OLECONTF_ONLYIFRUNNING = 16
)

const ( /* oleidl.h:4465:1: */
	OLEVERBATTRIB_NEVERDIRTIES    = 1
	OLEVERBATTRIB_ONCONTAINERMENU = 2
)

const ( /* oleidl.h:548:1: */
	DISCARDCACHE_SAVEIFDIRTY = 0
	DISCARDCACHE_NOSAVE      = 1
)

const ( /* propidl.h:381:1: */
	PIDMSI_STATUS_NORMAL     = 0
	PIDMSI_STATUS_NEW        = 1
	PIDMSI_STATUS_PRELIM     = 2
	PIDMSI_STATUS_DRAFT      = 3
	PIDMSI_STATUS_INPROGRESS = 4
	PIDMSI_STATUS_EDIT       = 5
	PIDMSI_STATUS_REVIEW     = 6
	PIDMSI_STATUS_PROOF      = 7
	PIDMSI_STATUS_FINAL      = 8
	PIDMSI_STATUS_OTHER      = 32767
)

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// TODO:  This isn't actual working on gcc.  Either we need to implement
//    their __try/__except/__finally feature, or we need to do at least for x64
//    emulation-code via inline-assembler ...

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

const ( /* rpcasync.h:20:3: */
	RpcNotificationTypeNone     = 0
	RpcNotificationTypeEvent    = 1
	RpcNotificationTypeApc      = 2
	RpcNotificationTypeIoc      = 3
	RpcNotificationTypeHwnd     = 4
	RpcNotificationTypeCallback = 5
)

const ( /* rpcasync.h:214:1: */
	rctInvalid    = 0
	rctNormal     = 1
	rctTraining   = 2
	rctGuaranteed = 3
)

const ( /* rpcasync.h:221:1: */
	rlafInvalid = 0
	rlafIPv4    = 1
	rlafIPv6    = 2
)

const ( /* rpcasync.h:227:1: */
	RpcNotificationCallNone         = 0
	RpcNotificationClientDisconnect = 1
	RpcNotificationCallCancel       = 2
)

const ( /* rpcasync.h:233:1: */
	rcclInvalid               = 0
	rcclLocal                 = 1
	rcclRemote                = 2
	rcclClientUnknownLocality = 3
)

const ( /* rpcasync.h:25:3: */
	RpcCallComplete    = 0
	RpcSendComplete    = 1
	RpcReceiveComplete = 2
)

const ( /* rpcasync.h:78:3: */
	eeptAnsiString    = 1
	eeptUnicodeString = 2
	eeptLongVal       = 3
	eeptShortVal      = 4
	eeptPointerVal    = 5
	eeptNone          = 6
	eeptBinary        = 7
)

const ( /* rpcdce.h:443:3: */
	RPCHTTP_RS_REDIRECT  = 1
	RPCHTTP_RS_ACCESS_1  = 2
	RPCHTTP_RS_SESSION   = 3
	RPCHTTP_RS_ACCESS_2  = 4
	RPCHTTP_RS_INTERFACE = 5
)

const ( /* rpcdcep.h:41:3: */
	PROTOCOL_NOT_LOADED     = 1
	PROTOCOL_LOADED         = 2
	PROTOCOL_ADDRESS_CHANGE = 3
)

const ( /* rpcndr.h:360:3: */
	USER_MARSHAL_CB_BUFFER_SIZE = 0
	USER_MARSHAL_CB_MARSHALL    = 1
	USER_MARSHAL_CB_UNMARSHALL  = 2
	USER_MARSHAL_CB_FREE        = 3
)

const ( /* rpcndr.h:391:3: */
	IDL_CS_NO_CONVERT         = 0
	IDL_CS_IN_PLACE_CONVERT   = 1
	IDL_CS_NEW_BUFFER_CONVERT = 2
)

const ( /* rpcndr.h:495:3: */
	XLAT_SERVER = 1
	XLAT_CLIENT = 2
)

const ( /* rpcndr.h:672:3: */
	STUB_UNMARSHAL              = 0
	STUB_CALL_SERVER            = 1
	STUB_MARSHAL                = 2
	STUB_CALL_SERVER_NO_HRESULT = 3
)

const ( /* rpcndr.h:676:3: */
	PROXY_CALCSIZE    = 0
	PROXY_GETBUFFER   = 1
	PROXY_MARSHAL     = 2
	PROXY_SENDRECEIVE = 3
	PROXY_UNMARSHAL   = 4
)

const ( /* sysinfoapi.h:70:3: */
	ComputerNameNetBIOS                   = 0
	ComputerNameDnsHostname               = 1
	ComputerNameDnsDomain                 = 2
	ComputerNameDnsFullyQualified         = 3
	ComputerNamePhysicalNetBIOS           = 4
	ComputerNamePhysicalDnsHostname       = 5
	ComputerNamePhysicalDnsDomain         = 6
	ComputerNamePhysicalDnsFullyQualified = 7
	ComputerNameMax                       = 8
)

const ( /* urlmon.h:10655:1: */
	BINDHANDLETYPES_APPCACHE   = 0
	BINDHANDLETYPES_DEPENDENCY = 1
	BINDHANDLETYPES_COUNT      = 2
)

const ( /* urlmon.h:1195:1: */
	BINDVERB_GET       = 0
	BINDVERB_POST      = 1
	BINDVERB_PUT       = 2
	BINDVERB_CUSTOM    = 3
	BINDVERB_RESERVED1 = 4
)

const ( /* urlmon.h:1203:1: */
	BINDINFOF_URLENCODESTGMEDDATA = 1
	BINDINFOF_URLENCODEDEXTRAINFO = 2
)

const ( /* urlmon.h:1208:1: */
	BINDF_ASYNCHRONOUS             = 1
	BINDF_ASYNCSTORAGE             = 2
	BINDF_NOPROGRESSIVERENDERING   = 4
	BINDF_OFFLINEOPERATION         = 8
	BINDF_GETNEWESTVERSION         = 16
	BINDF_NOWRITECACHE             = 32
	BINDF_NEEDFILE                 = 64
	BINDF_PULLDATA                 = 128
	BINDF_IGNORESECURITYPROBLEM    = 256
	BINDF_RESYNCHRONIZE            = 512
	BINDF_HYPERLINK                = 1024
	BINDF_NO_UI                    = 2048
	BINDF_SILENTOPERATION          = 4096
	BINDF_PRAGMA_NO_CACHE          = 8192
	BINDF_GETCLASSOBJECT           = 16384
	BINDF_RESERVED_1               = 32768
	BINDF_FREE_THREADED            = 65536
	BINDF_DIRECT_READ              = 131072
	BINDF_FORMS_SUBMIT             = 262144
	BINDF_GETFROMCACHE_IF_NET_FAIL = 524288
	BINDF_FROMURLMON               = 1048576
	BINDF_FWD_BACK                 = 2097152
	BINDF_PREFERDEFAULTHANDLER     = 4194304
	BINDF_ENFORCERESTRICTED        = 8388608
	BINDF_RESERVED_2               = 2147483648
	BINDF_RESERVED_3               = 16777216
	BINDF_RESERVED_4               = 33554432
	BINDF_RESERVED_5               = 67108864
	BINDF_RESERVED_6               = 134217728
	BINDF_RESERVED_7               = 1073741824
	BINDF_RESERVED_8               = 536870912
)

const ( /* urlmon.h:1242:1: */
	URL_ENCODING_NONE         = 0
	URL_ENCODING_ENABLE_UTF8  = 268435456
	URL_ENCODING_DISABLE_UTF8 = 536870912
)

const ( /* urlmon.h:1298:1: */
	BINDINFO_OPTIONS_WININETFLAG              = 65536
	BINDINFO_OPTIONS_ENABLE_UTF8              = 131072
	BINDINFO_OPTIONS_DISABLE_UTF8             = 262144
	BINDINFO_OPTIONS_USE_IE_ENCODING          = 524288
	BINDINFO_OPTIONS_BINDTOOBJECT             = 1048576
	BINDINFO_OPTIONS_SECURITYOPTOUT           = 2097152
	BINDINFO_OPTIONS_IGNOREMIMETEXTPLAIN      = 4194304
	BINDINFO_OPTIONS_USEBINDSTRINGCREDS       = 8388608
	BINDINFO_OPTIONS_IGNOREHTTPHTTPSREDIRECTS = 16777216
	BINDINFO_OPTIONS_IGNORE_SSLERRORS_ONCE    = 33554432
	BINDINFO_WPC_DOWNLOADBLOCKED              = 134217728
	BINDINFO_WPC_LOGGING_ENABLED              = 268435456
	BINDINFO_OPTIONS_ALLOWCONNECTDATA         = 536870912
	BINDINFO_OPTIONS_DISABLEAUTOREDIRECTS     = 1073741824
	BINDINFO_OPTIONS_SHDOCVW_NAVIGATE         = -2147483648
)

const ( /* urlmon.h:1316:1: */
	BSCF_FIRSTDATANOTIFICATION        = 1
	BSCF_INTERMEDIATEDATANOTIFICATION = 2
	BSCF_LASTDATANOTIFICATION         = 4
	BSCF_DATAFULLYAVAILABLE           = 8
	BSCF_AVAILABLEDATASIZEUNKNOWN     = 16
	BSCF_SKIPDRAINDATAFORFILEURLS     = 32
	BSCF_64BITLENGTHDOWNLOAD          = 64
)

const ( /* urlmon.h:1326:1: */
	BINDSTATUS_FINDINGRESOURCE            = 1
	BINDSTATUS_CONNECTING                 = 2
	BINDSTATUS_REDIRECTING                = 3
	BINDSTATUS_BEGINDOWNLOADDATA          = 4
	BINDSTATUS_DOWNLOADINGDATA            = 5
	BINDSTATUS_ENDDOWNLOADDATA            = 6
	BINDSTATUS_BEGINDOWNLOADCOMPONENTS    = 7
	BINDSTATUS_INSTALLINGCOMPONENTS       = 8
	BINDSTATUS_ENDDOWNLOADCOMPONENTS      = 9
	BINDSTATUS_USINGCACHEDCOPY            = 10
	BINDSTATUS_SENDINGREQUEST             = 11
	BINDSTATUS_CLASSIDAVAILABLE           = 12
	BINDSTATUS_MIMETYPEAVAILABLE          = 13
	BINDSTATUS_CACHEFILENAMEAVAILABLE     = 14
	BINDSTATUS_BEGINSYNCOPERATION         = 15
	BINDSTATUS_ENDSYNCOPERATION           = 16
	BINDSTATUS_BEGINUPLOADDATA            = 17
	BINDSTATUS_UPLOADINGDATA              = 18
	BINDSTATUS_ENDUPLOADDATA              = 19
	BINDSTATUS_PROTOCOLCLASSID            = 20
	BINDSTATUS_ENCODING                   = 21
	BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE  = 22
	BINDSTATUS_CLASSINSTALLLOCATION       = 23
	BINDSTATUS_DECODING                   = 24
	BINDSTATUS_LOADINGMIMEHANDLER         = 25
	BINDSTATUS_CONTENTDISPOSITIONATTACH   = 26
	BINDSTATUS_FILTERREPORTMIMETYPE       = 27
	BINDSTATUS_CLSIDCANINSTANTIATE        = 28
	BINDSTATUS_IUNKNOWNAVAILABLE          = 29
	BINDSTATUS_DIRECTBIND                 = 30
	BINDSTATUS_RAWMIMETYPE                = 31
	BINDSTATUS_PROXYDETECTING             = 32
	BINDSTATUS_ACCEPTRANGES               = 33
	BINDSTATUS_COOKIE_SENT                = 34
	BINDSTATUS_COMPACT_POLICY_RECEIVED    = 35
	BINDSTATUS_COOKIE_SUPPRESSED          = 36
	BINDSTATUS_COOKIE_STATE_UNKNOWN       = 37
	BINDSTATUS_COOKIE_STATE_ACCEPT        = 38
	BINDSTATUS_COOKIE_STATE_REJECT        = 39
	BINDSTATUS_COOKIE_STATE_PROMPT        = 40
	BINDSTATUS_COOKIE_STATE_LEASH         = 41
	BINDSTATUS_COOKIE_STATE_DOWNGRADE     = 42
	BINDSTATUS_POLICY_HREF                = 43
	BINDSTATUS_P3P_HEADER                 = 44
	BINDSTATUS_SESSION_COOKIE_RECEIVED    = 45
	BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = 46
	BINDSTATUS_SESSION_COOKIES_ALLOWED    = 47
	BINDSTATUS_CACHECONTROL               = 48
	BINDSTATUS_CONTENTDISPOSITIONFILENAME = 49
	BINDSTATUS_MIMETEXTPLAINMISMATCH      = 50
	BINDSTATUS_PUBLISHERAVAILABLE         = 51
	BINDSTATUS_DISPLAYNAMEAVAILABLE       = 52
	BINDSTATUS_SSLUX_NAVBLOCKED           = 53
	BINDSTATUS_SERVER_MIMETYPEAVAILABLE   = 54
	BINDSTATUS_SNIFFED_CLASSIDAVAILABLE   = 55
	BINDSTATUS_64BIT_PROGRESS             = 56
	BINDSTATUS_LAST                       = 56
	BINDSTATUS_RESERVED_0                 = 57
	BINDSTATUS_RESERVED_1                 = 58
	BINDSTATUS_RESERVED_2                 = 59
	BINDSTATUS_RESERVED_3                 = 60
	BINDSTATUS_RESERVED_4                 = 61
	BINDSTATUS_RESERVED_5                 = 62
	BINDSTATUS_RESERVED_6                 = 63
	BINDSTATUS_RESERVED_7                 = 64
	BINDSTATUS_RESERVED_8                 = 65
	BINDSTATUS_RESERVED_9                 = 66
	BINDSTATUS_LAST_PRIVATE               = 66
)

const ( /* urlmon.h:1675:1: */
	BINDF2_DISABLEBASICOVERHTTP              = 1
	BINDF2_DISABLEAUTOCOOKIEHANDLING         = 2
	BINDF2_READ_DATA_GREATER_THAN_4GB        = 4
	BINDF2_DISABLE_HTTP_REDIRECT_XSECURITYID = 8
	BINDF2_SETDOWNLOADMODE                   = 32
	BINDF2_DISABLE_HTTP_REDIRECT_CACHING     = 64
	BINDF2_KEEP_CALLBACK_MODULE_LOADED       = 128
	BINDF2_ALLOW_PROXY_CRED_PROMPT           = 256
	BINDF2_RESERVED_F                        = 131072
	BINDF2_RESERVED_E                        = 262144
	BINDF2_RESERVED_D                        = 524288
	BINDF2_RESERVED_C                        = 1048576
	BINDF2_RESERVED_B                        = 2097152
	BINDF2_RESERVED_A                        = 4194304
	BINDF2_RESERVED_9                        = 8388608
	BINDF2_RESERVED_8                        = 16777216
	BINDF2_RESERVED_7                        = 33554432
	BINDF2_RESERVED_6                        = 67108864
	BINDF2_RESERVED_5                        = 134217728
	BINDF2_RESERVED_4                        = 268435456
	BINDF2_RESERVED_3                        = 536870912
	BINDF2_RESERVED_2                        = 1073741824
	BINDF2_RESERVED_1                        = 2147483648
)

const ( /* urlmon.h:1989:1: */
	AUTHENTICATEF_PROXY = 1
	AUTHENTICATEF_BASIC = 2
	AUTHENTICATEF_HTTP  = 4
)

const ( /* urlmon.h:2702:1: */
	CIP_DISK_FULL                            = 0
	CIP_ACCESS_DENIED                        = 1
	CIP_NEWER_VERSION_EXISTS                 = 2
	CIP_OLDER_VERSION_EXISTS                 = 3
	CIP_NAME_CONFLICT                        = 4
	CIP_TRUST_VERIFICATION_COMPONENT_MISSING = 5
	CIP_EXE_SELF_REGISTERATION_TIMEOUT       = 6
	CIP_UNSAFE_TO_ABORT                      = 7
	CIP_NEED_REBOOT                          = 8
	CIP_NEED_REBOOT_UI_PERMISSION            = 9
)

const ( /* urlmon.h:5266:1: */
	BINDSTRING_HEADERS             = 1
	BINDSTRING_ACCEPT_MIMES        = 2
	BINDSTRING_EXTRA_URL           = 3
	BINDSTRING_LANGUAGE            = 4
	BINDSTRING_USERNAME            = 5
	BINDSTRING_PASSWORD            = 6
	BINDSTRING_UA_PIXELS           = 7
	BINDSTRING_UA_COLOR            = 8
	BINDSTRING_OS                  = 9
	BINDSTRING_USER_AGENT          = 10
	BINDSTRING_ACCEPT_ENCODINGS    = 11
	BINDSTRING_POST_COOKIE         = 12
	BINDSTRING_POST_DATA_MIME      = 13
	BINDSTRING_URL                 = 14
	BINDSTRING_IID                 = 15
	BINDSTRING_FLAG_BIND_TO_OBJECT = 16
	BINDSTRING_PTR_BIND_CONTEXT    = 17
	BINDSTRING_XDR_ORIGIN          = 18
	BINDSTRING_DOWNLOADPATH        = 19
	BINDSTRING_ROOTDOC_URL         = 20
	BINDSTRING_INITIAL_FILENAME    = 21
	BINDSTRING_PROXY_USERNAME      = 22
	BINDSTRING_PROXY_PASSWORD      = 23
)

const ( /* urlmon.h:5537:1: */
	PI_PARSE_URL            = 1
	PI_FILTER_MODE          = 2
	PI_FORCE_ASYNC          = 4
	PI_USE_WORKERTHREAD     = 8
	PI_MIMEVERIFICATION     = 16
	PI_CLSIDLOOKUP          = 32
	PI_DATAPROGRESS         = 64
	PI_SYNCHRONOUS          = 128
	PI_APARTMENTTHREADED    = 256
	PI_CLASSINSTALL         = 512
	PI_PASSONBINDCTX        = 8192
	PI_NOMIMEHANDLER        = 32768
	PI_LOADAPPDIRECT        = 16384
	PD_FORCE_SWITCH         = 65536
	PI_PREFERDEFAULTHANDLER = 131072
)

const ( /* urlmon.h:6458:1: */
	OIBDG_APARTMENTTHREADED = 256
	OIBDG_DATAONLY          = 4096
)

const ( /* urlmon.h:6944:1: */
	PARSE_CANONICALIZE       = 1
	PARSE_FRIENDLY           = 2
	PARSE_SECURITY_URL       = 3
	PARSE_ROOTDOCUMENT       = 4
	PARSE_DOCUMENT           = 5
	PARSE_ANCHOR             = 6
	PARSE_ENCODE_IS_UNESCAPE = 7
	PARSE_DECODE_IS_ESCAPE   = 8
	PARSE_PATH_FROM_URL      = 9
	PARSE_URL_FROM_PATH      = 10
	PARSE_MIME               = 11
	PARSE_SERVER             = 12
	PARSE_SCHEMA             = 13
	PARSE_SITE               = 14
	PARSE_DOMAIN             = 15
	PARSE_LOCATION           = 16
	PARSE_SECURITY_DOMAIN    = 17
	PARSE_ESCAPE             = 18
	PARSE_UNESCAPE           = 19
)

const ( /* urlmon.h:6966:1: */
	PSU_DEFAULT           = 1
	PSU_SECURITY_URL_ONLY = 2
)

const ( /* urlmon.h:6971:1: */
	QUERY_EXPIRATION_DATE              = 1
	QUERY_TIME_OF_LAST_CHANGE          = 2
	QUERY_CONTENT_ENCODING             = 3
	QUERY_CONTENT_TYPE                 = 4
	QUERY_REFRESH                      = 5
	QUERY_RECOMBINE                    = 6
	QUERY_CAN_NAVIGATE                 = 7
	QUERY_USES_NETWORK                 = 8
	QUERY_IS_CACHED                    = 9
	QUERY_IS_INSTALLEDENTRY            = 10
	QUERY_IS_CACHED_OR_MAPPED          = 11
	QUERY_USES_CACHE                   = 12
	QUERY_IS_SECURE                    = 13
	QUERY_IS_SAFE                      = 14
	QUERY_USES_HISTORYFOLDER           = 15
	QUERY_IS_CACHED_AND_USABLE_OFFLINE = 16
)

// ****************************************************************************
//
// IInternetSecurityManager interface

const ( /* urlmon.h:7495:1: */
	PUAF_DEFAULT                      = 0
	PUAF_NOUI                         = 1
	PUAF_ISFILE                       = 2
	PUAF_WARN_IF_DENIED               = 4
	PUAF_FORCEUI_FOREGROUND           = 8
	PUAF_CHECK_TIFS                   = 16
	PUAF_DONTCHECKBOXINDIALOG         = 32
	PUAF_TRUSTED                      = 64
	PUAF_ACCEPT_WILDCARD_SCHEME       = 128
	PUAF_ENFORCERESTRICTED            = 256
	PUAF_NOSAVEDFILECHECK             = 512
	PUAF_REQUIRESAVEDFILECHECK        = 1024
	PUAF_DONT_USE_CACHE               = 4096
	PUAF_RESERVED1                    = 8192
	PUAF_RESERVED2                    = 16384
	PUAF_LMZ_UNLOCKED                 = 65536
	PUAF_LMZ_LOCKED                   = 131072
	PUAF_DEFAULTZONEPOL               = 262144
	PUAF_NPL_USE_LOCKED_IF_RESTRICTED = 524288
	PUAF_NOUIIFLOCKED                 = 1048576
	PUAF_DRAGPROTOCOLCHECK            = 2097152
)
const ( /* urlmon.h:7518:1: */
	PUAFOUT_DEFAULT          = 0
	PUAFOUT_ISLOCKZONEPOLICY = 1
)

const ( /* urlmon.h:7524:1: */
	SZM_CREATE = 0
	SZM_DELETE = 1
)

const ( /* urlmon.h:793:1: */
	MIMETYPEPROP        = 0
	USE_SRC_URL         = 1
	CLASSIDPROP         = 2
	TRUSTEDDOWNLOADPROP = 3
	POPUPLEVELPROP      = 4
)

const ( /* urlmon.h:8834:1: */
	URLZONE_INVALID        = -1
	URLZONE_PREDEFINED_MIN = 0
	URLZONE_LOCAL_MACHINE  = 0
	URLZONE_INTRANET       = 1
	URLZONE_TRUSTED        = 2
	URLZONE_INTERNET       = 3
	URLZONE_UNTRUSTED      = 4
	URLZONE_PREDEFINED_MAX = 999
	URLZONE_USER_MIN       = 1000
	URLZONE_USER_MAX       = 10000
)

const ( /* urlmon.h:8849:1: */
	URLTEMPLATE_CUSTOM         = 0
	URLTEMPLATE_PREDEFINED_MIN = 65536
	URLTEMPLATE_LOW            = 65536
	URLTEMPLATE_MEDLOW         = 66816
	URLTEMPLATE_MEDIUM         = 69632
	URLTEMPLATE_MEDHIGH        = 70912
	URLTEMPLATE_HIGH           = 73728
	URLTEMPLATE_PREDEFINED_MAX = 131072
)

const ( /* urlmon.h:8860:1: */
	MAX_ZONE_PATH        = 260
	MAX_ZONE_DESCRIPTION = 200
)

const ( /* urlmon.h:8866:1: */
	ZAFLAGS_CUSTOM_EDIT              = 1
	ZAFLAGS_ADD_SITES                = 2
	ZAFLAGS_REQUIRE_VERIFICATION     = 4
	ZAFLAGS_INCLUDE_PROXY_OVERRIDE   = 8
	ZAFLAGS_INCLUDE_INTRANET_SITES   = 16
	ZAFLAGS_NO_UI                    = 32
	ZAFLAGS_SUPPORTS_VERIFICATION    = 64
	ZAFLAGS_UNC_AS_INTRANET          = 128
	ZAFLAGS_DETECT_INTRANET          = 256
	ZAFLAGS_USE_LOCKED_ZONES         = 65536
	ZAFLAGS_VERIFY_TEMPLATE_SETTINGS = 131072
	ZAFLAGS_NO_CACHE                 = 262144
)

const ( /* urlmon.h:8894:1: */
	URLZONEREG_DEFAULT = 0
	URLZONEREG_HKLM    = 1
	URLZONEREG_HKCU    = 2
)

// TODO: Add RTL_UMS... to winnt.h header and add UMS-base API.

const ( /* winbase.h:1191:3: */
	ThreadMemoryPriority      = 0
	ThreadAbsoluteCpuPriority = 1
	ThreadInformationClassMax = 2
)

const ( /* winbase.h:1197:3: */
	ProcessMemoryPriority      = 0
	ProcessInformationClassMax = 1
)

const ( /* winbase.h:1298:3: */
	DEPPolicyAlwaysOff  = 0
	DEPPolicyAlwaysOn   = 1
	DEPPolicyOptIn      = 2
	DEPPolicyOptOut     = 3
	DEPTotalPolicyCount = 4
)

const ( /* winbase.h:2147:3: */
	FindStreamInfoStandard     = 0
	FindStreamInfoMaxInfoLevel = 1
)

const ( /* winnls.h:720:3: */
	COMPARE_STRING = 1
)

const ( /* winnls.h:756:3: */
	GEO_NATION            = 1
	GEO_LATITUDE          = 2
	GEO_LONGITUDE         = 3
	GEO_ISO2              = 4
	GEO_ISO3              = 5
	GEO_RFC1766           = 6
	GEO_LCID              = 7
	GEO_FRIENDLYNAME      = 8
	GEO_OFFICIALNAME      = 9
	GEO_TIMEZONES         = 10
	GEO_OFFICIALLANGUAGES = 11
	GEO_ISO_UN_NUMBER     = 12
	GEO_PARENT            = 13
)

const ( /* winnls.h:772:3: */
	GEOCLASS_NATION = 16
	GEOCLASS_REGION = 14
	GEOCLASS_ALL    = 0
)

const ( /* winnt.h:2945:5: */
	SidTypeUser           = 1
	SidTypeGroup          = 2
	SidTypeDomain         = 3
	SidTypeAlias          = 4
	SidTypeWellKnownGroup = 5
	SidTypeDeletedAccount = 6
	SidTypeInvalid        = 7
	SidTypeUnknown        = 8
	SidTypeComputer       = 9
	SidTypeLabel          = 10
	SidTypeLogonSession   = 11
)

const ( /* winnt.h:3184:5: */
	WinNullSid                                    = 0
	WinWorldSid                                   = 1
	WinLocalSid                                   = 2
	WinCreatorOwnerSid                            = 3
	WinCreatorGroupSid                            = 4
	WinCreatorOwnerServerSid                      = 5
	WinCreatorGroupServerSid                      = 6
	WinNtAuthoritySid                             = 7
	WinDialupSid                                  = 8
	WinNetworkSid                                 = 9
	WinBatchSid                                   = 10
	WinInteractiveSid                             = 11
	WinServiceSid                                 = 12
	WinAnonymousSid                               = 13
	WinProxySid                                   = 14
	WinEnterpriseControllersSid                   = 15
	WinSelfSid                                    = 16
	WinAuthenticatedUserSid                       = 17
	WinRestrictedCodeSid                          = 18
	WinTerminalServerSid                          = 19
	WinRemoteLogonIdSid                           = 20
	WinLogonIdsSid                                = 21
	WinLocalSystemSid                             = 22
	WinLocalServiceSid                            = 23
	WinNetworkServiceSid                          = 24
	WinBuiltinDomainSid                           = 25
	WinBuiltinAdministratorsSid                   = 26
	WinBuiltinUsersSid                            = 27
	WinBuiltinGuestsSid                           = 28
	WinBuiltinPowerUsersSid                       = 29
	WinBuiltinAccountOperatorsSid                 = 30
	WinBuiltinSystemOperatorsSid                  = 31
	WinBuiltinPrintOperatorsSid                   = 32
	WinBuiltinBackupOperatorsSid                  = 33
	WinBuiltinReplicatorSid                       = 34
	WinBuiltinPreWindows2000CompatibleAccessSid   = 35
	WinBuiltinRemoteDesktopUsersSid               = 36
	WinBuiltinNetworkConfigurationOperatorsSid    = 37
	WinAccountAdministratorSid                    = 38
	WinAccountGuestSid                            = 39
	WinAccountKrbtgtSid                           = 40
	WinAccountDomainAdminsSid                     = 41
	WinAccountDomainUsersSid                      = 42
	WinAccountDomainGuestsSid                     = 43
	WinAccountComputersSid                        = 44
	WinAccountControllersSid                      = 45
	WinAccountCertAdminsSid                       = 46
	WinAccountSchemaAdminsSid                     = 47
	WinAccountEnterpriseAdminsSid                 = 48
	WinAccountPolicyAdminsSid                     = 49
	WinAccountRasAndIasServersSid                 = 50
	WinNTLMAuthenticationSid                      = 51
	WinDigestAuthenticationSid                    = 52
	WinSChannelAuthenticationSid                  = 53
	WinThisOrganizationSid                        = 54
	WinOtherOrganizationSid                       = 55
	WinBuiltinIncomingForestTrustBuildersSid      = 56
	WinBuiltinPerfMonitoringUsersSid              = 57
	WinBuiltinPerfLoggingUsersSid                 = 58
	WinBuiltinAuthorizationAccessSid              = 59
	WinBuiltinTerminalServerLicenseServersSid     = 60
	WinBuiltinDCOMUsersSid                        = 61
	WinBuiltinIUsersSid                           = 62
	WinIUserSid                                   = 63
	WinBuiltinCryptoOperatorsSid                  = 64
	WinUntrustedLabelSid                          = 65
	WinLowLabelSid                                = 66
	WinMediumLabelSid                             = 67
	WinHighLabelSid                               = 68
	WinSystemLabelSid                             = 69
	WinWriteRestrictedCodeSid                     = 70
	WinCreatorOwnerRightsSid                      = 71
	WinCacheablePrincipalsGroupSid                = 72
	WinNonCacheablePrincipalsGroupSid             = 73
	WinEnterpriseReadonlyControllersSid           = 74
	WinAccountReadonlyControllersSid              = 75
	WinBuiltinEventLogReadersGroup                = 76
	WinNewEnterpriseReadonlyControllersSid        = 77
	WinBuiltinCertSvcDComAccessGroup              = 78
	WinMediumPlusLabelSid                         = 79
	WinLocalLogonSid                              = 80
	WinConsoleLogonSid                            = 81
	WinThisOrganizationCertificateSid             = 82
	WinApplicationPackageAuthoritySid             = 83
	WinBuiltinAnyPackageSid                       = 84
	WinCapabilityInternetClientSid                = 85
	WinCapabilityInternetClientServerSid          = 86
	WinCapabilityPrivateNetworkClientServerSid    = 87
	WinCapabilityPicturesLibrarySid               = 88
	WinCapabilityVideosLibrarySid                 = 89
	WinCapabilityMusicLibrarySid                  = 90
	WinCapabilityDocumentsLibrarySid              = 91
	WinCapabilitySharedUserCertificatesSid        = 92
	WinCapabilityEnterpriseAuthenticationSid      = 93
	WinCapabilityRemovableStorageSid              = 94
	WinBuiltinRDSRemoteAccessServersSid           = 95
	WinBuiltinRDSEndpointServersSid               = 96
	WinBuiltinRDSManagementServersSid             = 97
	WinUserModeDriversSid                         = 98
	WinBuiltinHyperVAdminsSid                     = 99
	WinAccountCloneableControllersSid             = 100
	WinBuiltinAccessControlAssistanceOperatorsSid = 101
	WinBuiltinRemoteManagementUsersSid            = 102
	WinAuthenticationAuthorityAssertedSid         = 103
	WinAuthenticationServiceAssertedSid           = 104
	WinLocalAccountSid                            = 105
	WinLocalAccountAndAdministratorSid            = 106
	WinAccountProtectedUsersSid                   = 107
	WinCapabilityAppointmentsSid                  = 108
	WinCapabilityContactsSid                      = 109
	WinAccountDefaultSystemManagedSid             = 110
	WinBuiltinDefaultSystemManagedGroupSid        = 111
	WinBuiltinStorageReplicaAdminsSid             = 112
	WinAccountKeyAdminsSid                        = 113
	WinAccountEnterpriseKeyAdminsSid              = 114
	WinAuthenticationKeyTrustSid                  = 115
	WinAuthenticationKeyPropertyMFASid            = 116
	WinAuthenticationKeyPropertyAttestationSid    = 117
)

const ( /* winnt.h:3495:5: */
	AclRevisionInformation = 1
	AclSizeInformation     = 2
)

const ( /* winnt.h:3565:5: */
	AuditEventObjectAccess           = 0
	AuditEventDirectoryServiceAccess = 1
)

const ( /* winnt.h:3597:5: */
	AccessReasonNone                     = 0
	AccessReasonAllowedAce               = 65536
	AccessReasonDeniedAce                = 131072
	AccessReasonAllowedParentAce         = 196608
	AccessReasonDeniedParentAce          = 262144
	AccessReasonNotGrantedByCape         = 327680
	AccessReasonNotGrantedByParentCape   = 393216
	AccessReasonNotGrantedToAppContainer = 458752
	AccessReasonMissingPrivilege         = 1048576
	AccessReasonFromPrivilege            = 2097152
	AccessReasonIntegrityLevel           = 3145728
	AccessReasonOwnership                = 4194304
	AccessReasonNullDacl                 = 5242880
	AccessReasonEmptyDacl                = 6291456
	AccessReasonNoSD                     = 7340032
	AccessReasonNoGrant                  = 8388608
)

const ( /* winnt.h:3687:5: */
	SecurityAnonymous      = 0
	SecurityIdentification = 1
	SecurityImpersonation  = 2
	SecurityDelegation     = 3
)

const ( /* winnt.h:3714:5: */
	TokenPrimary       = 1
	TokenImpersonation = 2
)

const ( /* winnt.h:3719:5: */
	TokenElevationTypeDefault = 1
	TokenElevationTypeFull    = 2
	TokenElevationTypeLimited = 3
)

const ( /* winnt.h:3725:5: */
	TokenUser                            = 1
	TokenGroups                          = 2
	TokenPrivileges                      = 3
	TokenOwner                           = 4
	TokenPrimaryGroup                    = 5
	TokenDefaultDacl                     = 6
	TokenSource                          = 7
	TokenType                            = 8
	TokenImpersonationLevel              = 9
	TokenStatistics                      = 10
	TokenRestrictedSids                  = 11
	TokenSessionId                       = 12
	TokenGroupsAndPrivileges             = 13
	TokenSessionReference                = 14
	TokenSandBoxInert                    = 15
	TokenAuditPolicy                     = 16
	TokenOrigin                          = 17
	TokenElevationType                   = 18
	TokenLinkedToken                     = 19
	TokenElevation                       = 20
	TokenHasRestrictions                 = 21
	TokenAccessInformation               = 22
	TokenVirtualizationAllowed           = 23
	TokenVirtualizationEnabled           = 24
	TokenIntegrityLevel                  = 25
	TokenUIAccess                        = 26
	TokenMandatoryPolicy                 = 27
	TokenLogonSid                        = 28
	TokenIsAppContainer                  = 29
	TokenCapabilities                    = 30
	TokenAppContainerSid                 = 31
	TokenAppContainerNumber              = 32
	TokenUserClaimAttributes             = 33
	TokenDeviceClaimAttributes           = 34
	TokenRestrictedUserClaimAttributes   = 35
	TokenRestrictedDeviceClaimAttributes = 36
	TokenDeviceGroups                    = 37
	TokenRestrictedDeviceGroups          = 38
	TokenSecurityAttributes              = 39
	TokenIsRestricted                    = 40
	MaxTokenInfoClass                    = 41
)

const ( /* winnt.h:3893:5: */
	MandatoryLevelUntrusted     = 0
	MandatoryLevelLow           = 1
	MandatoryLevelMedium        = 2
	MandatoryLevelHigh          = 3
	MandatoryLevelSystem        = 4
	MandatoryLevelSecureProcess = 5
	MandatoryLevelCount         = 6
)

const ( /* winnt.h:4019:5: */
	SeLearningModeInvalidType = 0
	SeLearningModeSettings    = 1
	SeLearningModeMax         = 2
)

const ( /* winnt.h:4223:5: */
	PMCCounter             = 0
	MaxHardwareCounterType = 1
)

const ( /* winnt.h:4228:5: */
	ProcessDEPPolicy                   = 0
	ProcessASLRPolicy                  = 1
	ProcessDynamicCodePolicy           = 2
	ProcessStrictHandleCheckPolicy     = 3
	ProcessSystemCallDisablePolicy     = 4
	ProcessMitigationOptionsMask       = 5
	ProcessExtensionPointDisablePolicy = 6
	ProcessControlFlowGuardPolicy      = 7
	ProcessSignaturePolicy             = 8
	ProcessFontDisablePolicy           = 9
	ProcessImageLoadPolicy             = 10
	MaxProcessMitigationPolicy         = 11
)

const ( /* winnt.h:4426:5: */
	ToleranceLow    = 1
	ToleranceMedium = 2
	ToleranceHigh   = 3
)

const ( /* winnt.h:4432:5: */
	ToleranceIntervalShort  = 1
	ToleranceIntervalMedium = 2
	ToleranceIntervalLong   = 3
)

const ( /* winnt.h:4551:5: */
	JobObjectBasicAccountingInformation         = 1
	JobObjectBasicLimitInformation              = 2
	JobObjectBasicProcessIdList                 = 3
	JobObjectBasicUIRestrictions                = 4
	JobObjectSecurityLimitInformation           = 5
	JobObjectEndOfJobTimeInformation            = 6
	JobObjectAssociateCompletionPortInformation = 7
	JobObjectBasicAndIoAccountingInformation    = 8
	JobObjectExtendedLimitInformation           = 9
	JobObjectJobSetInformation                  = 10
	JobObjectGroupInformation                   = 11
	JobObjectNotificationLimitInformation       = 12
	JobObjectLimitViolationInformation          = 13
	JobObjectGroupInformationEx                 = 14
	JobObjectCpuRateControlInformation          = 15
	JobObjectCompletionFilter                   = 16
	JobObjectCompletionCounter                  = 17
	JobObjectReserved1Information               = 18
	JobObjectReserved2Information               = 19
	JobObjectReserved3Information               = 20
	JobObjectReserved4Information               = 21
	JobObjectReserved5Information               = 22
	JobObjectReserved6Information               = 23
	JobObjectReserved7Information               = 24
	JobObjectReserved8Information               = 25
	MaxJobObjectInfoClass                       = 26
)

const ( /* winnt.h:4575:5: */
	FirmwareTypeUnknown = 0
	FirmwareTypeBios    = 1
	FirmwareTypeUefi    = 2
	FirmwareTypeMax     = 3
)

const ( /* winnt.h:4600:5: */
	RelationProcessorCore    = 0
	RelationNumaNode         = 1
	RelationCache            = 2
	RelationProcessorPackage = 3
	RelationGroup            = 4
	RelationAll              = 65535
)

const ( /* winnt.h:4607:5: */
	CacheUnified     = 0
	CacheInstruction = 1
	CacheData        = 2
	CacheTrace       = 3
)

const ( /* winnt.h:467:1: */
	UNSPECIFIED_COMPARTMENT_ID = 0
	DEFAULT_COMPARTMENT_ID     = 1
)

const ( /* winnt.h:5229:3: */
	PowerSystemUnspecified = 0
	PowerSystemWorking     = 1
	PowerSystemSleeping1   = 2
	PowerSystemSleeping2   = 3
	PowerSystemSleeping3   = 4
	PowerSystemHibernate   = 5
	PowerSystemShutdown    = 6
	PowerSystemMaximum     = 7
)

const ( /* winnt.h:5235:3: */
	PowerActionNone          = 0
	PowerActionReserved      = 1
	PowerActionSleep         = 2
	PowerActionHibernate     = 3
	PowerActionShutdown      = 4
	PowerActionShutdownReset = 5
	PowerActionShutdownOff   = 6
	PowerActionWarmEject     = 7
)

const ( /* winnt.h:5241:3: */
	PowerDeviceUnspecified = 0
	PowerDeviceD0          = 1
	PowerDeviceD1          = 2
	PowerDeviceD2          = 3
	PowerDeviceD3          = 4
	PowerDeviceMaximum     = 5
)

const ( /* winnt.h:5246:3: */
	PowerMonitorOff = 0
	PowerMonitorOn  = 1
	PowerMonitorDim = 2
)

const ( /* winnt.h:5250:3: */
	PowerUserPresent    = 0
	PowerUserNotPresent = 1
	PowerUserInactive   = 2
	PowerUserMaximum    = 3
	PowerUserInvalid    = 3
)

const ( /* winnt.h:5266:3: */
	LT_DONT_CARE      = 0
	LT_LOWEST_LATENCY = 1
)

const ( /* winnt.h:5281:3: */
	PowerRequestDisplayRequired   = 0
	PowerRequestSystemRequired    = 1
	PowerRequestAwayModeRequired  = 2
	PowerRequestExecutionRequired = 3
)

const ( /* winnt.h:5309:5: */
	SystemPowerPolicyAc                = 0
	SystemPowerPolicyDc                = 1
	VerifySystemPolicyAc               = 2
	VerifySystemPolicyDc               = 3
	SystemPowerCapabilities            = 4
	SystemBatteryState                 = 5
	SystemPowerStateHandler            = 6
	ProcessorStateHandler              = 7
	SystemPowerPolicyCurrent           = 8
	AdministratorPowerPolicy           = 9
	SystemReserveHiberFile             = 10
	ProcessorInformation               = 11
	SystemPowerInformation             = 12
	ProcessorStateHandler2             = 13
	LastWakeTime                       = 14
	LastSleepTime                      = 15
	SystemExecutionState               = 16
	SystemPowerStateNotifyHandler      = 17
	ProcessorPowerPolicyAc             = 18
	ProcessorPowerPolicyDc             = 19
	VerifyProcessorPowerPolicyAc       = 20
	VerifyProcessorPowerPolicyDc       = 21
	ProcessorPowerPolicyCurrent        = 22
	SystemPowerStateLogging            = 23
	SystemPowerLoggingEntry            = 24
	SetPowerSettingValue               = 25
	NotifyUserPowerSetting             = 26
	PowerInformationLevelUnused0       = 27
	SystemMonitorHiberBootPowerOff     = 28
	SystemVideoState                   = 29
	TraceApplicationPowerMessage       = 30
	TraceApplicationPowerMessageEnd    = 31
	ProcessorPerfStates                = 32
	ProcessorIdleStates                = 33
	ProcessorCap                       = 34
	SystemWakeSource                   = 35
	SystemHiberFileInformation         = 36
	TraceServicePowerMessage           = 37
	ProcessorLoad                      = 38
	PowerShutdownNotification          = 39
	MonitorCapabilities                = 40
	SessionPowerInit                   = 41
	SessionDisplayState                = 42
	PowerRequestCreate                 = 43
	PowerRequestAction                 = 44
	GetPowerRequestList                = 45
	ProcessorInformationEx             = 46
	NotifyUserModeLegacyPowerEvent     = 47
	GroupPark                          = 48
	ProcessorIdleDomains               = 49
	WakeTimerList                      = 50
	SystemHiberFileSize                = 51
	ProcessorIdleStatesHv              = 52
	ProcessorPerfStatesHv              = 53
	ProcessorPerfCapHv                 = 54
	ProcessorSetIdle                   = 55
	LogicalProcessorIdling             = 56
	UserPresence                       = 57
	PowerSettingNotificationName       = 58
	GetPowerSettingValue               = 59
	IdleResiliency                     = 60
	SessionRITState                    = 61
	SessionConnectNotification         = 62
	SessionPowerCleanup                = 63
	SessionLockState                   = 64
	SystemHiberbootState               = 65
	PlatformInformation                = 66
	PdcInvocation                      = 67
	MonitorInvocation                  = 68
	FirmwareTableInformationRegistered = 69
	SetShutdownSelectedTime            = 70
	SuspendResumeInvocation            = 71
	PlmPowerRequestCreate              = 72
	ScreenOff                          = 73
	CsDeviceNotification               = 74
	PlatformRole                       = 75
	LastResumePerformance              = 76
	DisplayBurst                       = 77
	ExitLatencySamplingPercentage      = 78
	ApplyLowPowerScenarioSettings      = 79
	PowerInformationLevelMaximum       = 80
)

const ( /* winnt.h:5393:5: */
	UserNotPresent = 0
	UserPresent    = 1
	UserUnknown    = 255
)

const ( /* winnt.h:5429:5: */
	MonitorRequestReasonUnknown                 = 0
	MonitorRequestReasonPowerButton             = 1
	MonitorRequestReasonRemoteConnection        = 2
	MonitorRequestReasonScMonitorpower          = 3
	MonitorRequestReasonUserInput               = 4
	MonitorRequestReasonAcDcDisplayBurst        = 5
	MonitorRequestReasonUserDisplayBurst        = 6
	MonitorRequestReasonPoSetSystemState        = 7
	MonitorRequestReasonSetThreadExecutionState = 8
	MonitorRequestReasonFullWake                = 9
	MonitorRequestReasonSessionUnlock           = 10
	MonitorRequestReasonScreenOffRequest        = 11
	MonitorRequestReasonIdleTimeout             = 12
	MonitorRequestReasonPolicyChange            = 13
	MonitorRequestReasonMax                     = 14
)

const ( /* winnt.h:5459:5: */
	PoAc               = 0
	PoDc               = 1
	PoHot              = 2
	PoConditionMaximum = 3
)

const ( /* winnt.h:5486:5: */
	PlatformRoleUnspecified       = 0
	PlatformRoleDesktop           = 1
	PlatformRoleMobile            = 2
	PlatformRoleWorkstation       = 3
	PlatformRoleEnterpriseServer  = 4
	PlatformRoleSOHOServer        = 5
	PlatformRoleAppliancePC       = 6
	PlatformRolePerformanceServer = 7
	PlatformRoleSlate             = 8
	PlatformRoleMaximum           = 9
)

const ( /* winnt.h:6623:5: */
	IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1
)

const ( /* winnt.h:7494:5: */
	IMPORT_OBJECT_CODE  = 0
	IMPORT_OBJECT_DATA  = 1
	IMPORT_OBJECT_CONST = 2
)

const ( /* winnt.h:7498:5: */
	IMPORT_OBJECT_ORDINAL         = 0
	IMPORT_OBJECT_NAME            = 1
	IMPORT_OBJECT_NAME_NO_PREFIX  = 2
	IMPORT_OBJECT_NAME_UNDECORATE = 3
)

const ( /* winnt.h:7504:5: */
	COMIMAGE_FLAGS_ILONLY                = 1
	COMIMAGE_FLAGS_32BITREQUIRED         = 2
	COMIMAGE_FLAGS_IL_LIBRARY            = 4
	COMIMAGE_FLAGS_STRONGNAMESIGNED      = 8
	COMIMAGE_FLAGS_TRACKDEBUGDATA        = 65536
	COR_VERSION_MAJOR_V2                 = 2
	COR_VERSION_MAJOR                    = 2
	COR_VERSION_MINOR                    = 0
	COR_DELETED_NAME_LENGTH              = 8
	COR_VTABLEGAP_NAME_LENGTH            = 8
	NATIVE_TYPE_MAX_CB                   = 1
	COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 255
	IMAGE_COR_MIH_METHODRVA              = 1
	IMAGE_COR_MIH_EHRVA                  = 2
	IMAGE_COR_MIH_BASICBLOCK             = 8
	COR_VTABLE_32BIT                     = 1
	COR_VTABLE_64BIT                     = 2
	COR_VTABLE_FROM_UNMANAGED            = 4
	COR_VTABLE_CALL_MOST_DERIVED         = 16
	IMAGE_COR_EATJ_THUNK_SIZE            = 32
	MAX_CLASS_NAME                       = 1024
	MAX_PACKAGE_NAME                     = 1024
)

const ( /* winnt.h:7909:5: */
	UmsThreadInvalidInfoClass = 0
	UmsThreadUserContext      = 1
	UmsThreadPriority         = 2
	UmsThreadAffinity         = 3
	UmsThreadTeb              = 4
	UmsThreadIsSuspended      = 5
	UmsThreadIsTerminated     = 6
	UmsThreadMaxInfoClass     = 7
)

const ( /* winnt.h:7920:5: */
	UmsSchedulerStartup       = 0
	UmsSchedulerThreadBlocked = 1
	UmsSchedulerThreadYield   = 2
)

const ( /* winnt.h:7995:5: */
	HeapCompatibilityInformation      = 0
	HeapEnableTerminationOnCorruption = 1
)

const ( /* winnt.h:8023:5: */
	ActivationContextBasicInformation                      = 1
	ActivationContextDetailedInformation                   = 2
	AssemblyDetailedInformationInActivationContext         = 3
	FileInformationInAssemblyOfAssemblyInActivationContext = 4
	RunlevelInformationInActivationContext                 = 5
	CompatibilityInformationInActivationContext            = 6
	ActivationContextManifestResourceName                  = 7
	MaxActivationContextInfoClass                          = 8
	AssemblyDetailedInformationInActivationContxt          = 3
	FileInformationInAssemblyOfAssemblyInActivationContxt  = 4
)

const ( /* winnt.h:8036:5: */
	ACTCTX_RUN_LEVEL_UNSPECIFIED       = 0
	ACTCTX_RUN_LEVEL_AS_INVOKER        = 1
	ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE = 2
	ACTCTX_RUN_LEVEL_REQUIRE_ADMIN     = 3
	ACTCTX_RUN_LEVEL_NUMBERS           = 4
)

const ( /* winnt.h:8044:5: */
	ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN    = 0
	ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS         = 1
	ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION = 2
)

const ( /* winnt.h:8465:5: */
	DriverType               = 1
	FileSystemType           = 2
	Win32ServiceOwnProcess   = 16
	Win32ServiceShareProcess = 32
	AdapterType              = 4
	RecognizerType           = 8
)

const ( /* winnt.h:8470:5: */
	BootLoad    = 0
	SystemLoad  = 1
	AutoLoad    = 2
	DemandLoad  = 3
	DisableLoad = 4
)

const ( /* winnt.h:8475:5: */
	IgnoreError   = 0
	NormalError   = 1
	SevereError   = 2
	CriticalError = 3
)

const ( /* winnt.h:8675:5: */
	TapeDriveProblemNone         = 0
	TapeDriveReadWriteWarning    = 1
	TapeDriveReadWriteError      = 2
	TapeDriveReadWarning         = 3
	TapeDriveWriteWarning        = 4
	TapeDriveReadError           = 5
	TapeDriveWriteError          = 6
	TapeDriveHardwareError       = 7
	TapeDriveUnsupportedMedia    = 8
	TapeDriveScsiConnectionError = 9
	TapeDriveTimetoClean         = 10
	TapeDriveCleanDriveNow       = 11
	TapeDriveMediaLifeExpired    = 12
	TapeDriveSnappedTape         = 13
)

const ( /* winnt.h:8685:3: */
	TP_CALLBACK_PRIORITY_HIGH    = 0
	TP_CALLBACK_PRIORITY_NORMAL  = 1
	TP_CALLBACK_PRIORITY_LOW     = 2
	TP_CALLBACK_PRIORITY_INVALID = 3
	TP_CALLBACK_PRIORITY_COUNT   = 3
)

const ( /* winnt.h:8878:7: */
	TransactionOutcomeUndetermined = 1
	TransactionOutcomeCommitted    = 2
	TransactionOutcomeAborted      = 3
)

const ( /* winnt.h:8884:7: */
	TransactionStateNormal          = 1
	TransactionStateIndoubt         = 2
	TransactionStateCommittedNotify = 3
)

const ( /* winnt.h:8956:7: */
	TransactionBasicInformation              = 0
	TransactionPropertiesInformation         = 1
	TransactionEnlistmentInformation         = 2
	TransactionSuperiorEnlistmentInformation = 3
	TransactionBindInformation               = 4
	TransactionDTCPrivateInformation         = 5
)

const ( /* winnt.h:8965:7: */
	TransactionManagerBasicInformation             = 0
	TransactionManagerLogInformation               = 1
	TransactionManagerLogPathInformation           = 2
	TransactionManagerOnlineProbeInformation       = 3
	TransactionManagerRecoveryInformation          = 4
	TransactionManagerOldestTransactionInformation = 5
)

const ( /* winnt.h:8974:7: */
	ResourceManagerBasicInformation      = 0
	ResourceManagerCompletionInformation = 1
)

const ( /* winnt.h:8991:7: */
	EnlistmentBasicInformation    = 0
	EnlistmentRecoveryInformation = 1
	EnlistmentCrmInformation      = 2
)

const ( /* winnt.h:9006:7: */
	KTMOBJECT_TRANSACTION         = 0
	KTMOBJECT_TRANSACTION_MANAGER = 1
	KTMOBJECT_RESOURCE_MANAGER    = 2
	KTMOBJECT_ENLISTMENT          = 3
	KTMOBJECT_INVALID             = 4
)

const ( /* winsock2.h:546:3: */
	NSP_NOTIFY_IMMEDIATELY = 0
	NSP_NOTIFY_HWND        = 1
	NSP_NOTIFY_EVENT       = 2
	NSP_NOTIFY_PORT        = 3
	NSP_NOTIFY_APC         = 4
)

const ( /* winsock2.h:686:3: */
	COMP_EQUAL   = 0
	COMP_NOTLESS = 1
)

const ( /* winsock2.h:769:3: */
	RNRSERVICE_REGISTER   = 0
	RNRSERVICE_DEREGISTER = 1
	RNRSERVICE_DELETE     = 2
)

const ( /* winsvc.h:106:3: */
	SC_ACTION_NONE        = 0
	SC_ACTION_RESTART     = 1
	SC_ACTION_REBOOT      = 2
	SC_ACTION_RUN_COMMAND = 3
)

const ( /* winsvc.h:139:3: */
	SC_STATUS_PROCESS_INFO = 0
)

const ( /* winsvc.h:143:3: */
	SC_ENUM_PROCESS_INFO = 0
)

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// FIXME FIXME FIXME FIXME FIXME: Much more data need moving here.
// This holds only SCOPE_LEVEL and SCOPE_ID so that compilations
// do not fail.

const ( /* ws2def.h:17:1: */
	ScopeLevelInterface    = 1
	ScopeLevelLink         = 2
	ScopeLevelSubnet       = 3
	ScopeLevelAdmin        = 4
	ScopeLevelSite         = 5
	ScopeLevelOrganization = 8
	ScopeLevelGlobal       = 14
	ScopeLevelCount        = 16
)

const ( /* ws2ipdef.h:63:1: */
	MCAST_INCLUDE = 0
	MCAST_EXCLUDE = 1
)

const ( /* wtypes.h:181:1: */
	DVASPECT_CONTENT   = 1
	DVASPECT_THUMBNAIL = 2
	DVASPECT_ICON      = 4
	DVASPECT_DOCPRINT  = 8
)

const ( /* wtypes.h:188:1: */
	STGC_DEFAULT                            = 0
	STGC_OVERWRITE                          = 1
	STGC_ONLYIFCURRENT                      = 2
	STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4
	STGC_CONSOLIDATE                        = 8
)

const ( /* wtypes.h:196:1: */
	STGMOVE_MOVE        = 0
	STGMOVE_COPY        = 1
	STGMOVE_SHALLOWCOPY = 2
)

const ( /* wtypes.h:202:1: */
	STATFLAG_DEFAULT = 0
	STATFLAG_NONAME  = 1
	STATFLAG_NOOPEN  = 2
)

const ( /* wtypes.h:512:1: */
	VT_EMPTY            = 0
	VT_NULL             = 1
	VT_I2               = 2
	VT_I4               = 3
	VT_R4               = 4
	VT_R8               = 5
	VT_CY               = 6
	VT_DATE             = 7
	VT_BSTR             = 8
	VT_DISPATCH         = 9
	VT_ERROR            = 10
	VT_BOOL             = 11
	VT_VARIANT          = 12
	VT_UNKNOWN          = 13
	VT_DECIMAL          = 14
	VT_I1               = 16
	VT_UI1              = 17
	VT_UI2              = 18
	VT_UI4              = 19
	VT_I8               = 20
	VT_UI8              = 21
	VT_INT              = 22
	VT_UINT             = 23
	VT_VOID             = 24
	VT_HRESULT          = 25
	VT_PTR              = 26
	VT_SAFEARRAY        = 27
	VT_CARRAY           = 28
	VT_USERDEFINED      = 29
	VT_LPSTR            = 30
	VT_LPWSTR           = 31
	VT_RECORD           = 36
	VT_INT_PTR          = 37
	VT_UINT_PTR         = 38
	VT_FILETIME         = 64
	VT_BLOB             = 65
	VT_STREAM           = 66
	VT_STORAGE          = 67
	VT_STREAMED_OBJECT  = 68
	VT_STORED_OBJECT    = 69
	VT_BLOB_OBJECT      = 70
	VT_CF               = 71
	VT_CLSID            = 72
	VT_VERSIONED_STREAM = 73
	VT_BSTR_BLOB        = 4095
	VT_VECTOR           = 4096
	VT_ARRAY            = 8192
	VT_BYREF            = 16384
	VT_RESERVED         = 32768
	VT_ILLEGAL          = 65535
	VT_ILLEGALMASKED    = 4095
	VT_TYPEMASK         = 4095
)

const ( /* wtypes.h:594:1: */
	TYSPEC_CLSID       = 0
	TYSPEC_FILEEXT     = 1
	TYSPEC_MIMETYPE    = 2
	TYSPEC_FILENAME    = 3
	TYSPEC_PROGID      = 4
	TYSPEC_PACKAGENAME = 5
	TYSPEC_OBJECTID    = 6
)

const ( /* wtypesbase.h:232:1: */
	MEMCTX_TASK      = 1
	MEMCTX_SHARED    = 2
	MEMCTX_MACSYSTEM = 3
	MEMCTX_UNKNOWN   = -1
	MEMCTX_SAME      = -2
)

const ( /* wtypesbase.h:268:1: */
	CLSCTX_INPROC_SERVER          = 1
	CLSCTX_INPROC_HANDLER         = 2
	CLSCTX_LOCAL_SERVER           = 4
	CLSCTX_INPROC_SERVER16        = 8
	CLSCTX_REMOTE_SERVER          = 16
	CLSCTX_INPROC_HANDLER16       = 32
	CLSCTX_RESERVED1              = 64
	CLSCTX_RESERVED2              = 128
	CLSCTX_RESERVED3              = 256
	CLSCTX_RESERVED4              = 512
	CLSCTX_NO_CODE_DOWNLOAD       = 1024
	CLSCTX_RESERVED5              = 2048
	CLSCTX_NO_CUSTOM_MARSHAL      = 4096
	CLSCTX_ENABLE_CODE_DOWNLOAD   = 8192
	CLSCTX_NO_FAILURE_LOG         = 16384
	CLSCTX_DISABLE_AAA            = 32768
	CLSCTX_ENABLE_AAA             = 65536
	CLSCTX_FROM_DEFAULT_CONTEXT   = 131072
	CLSCTX_ACTIVATE_32_BIT_SERVER = 262144
	CLSCTX_ACTIVATE_64_BIT_SERVER = 524288
	CLSCTX_ENABLE_CLOAKING        = 1048576
	CLSCTX_APPCONTAINER           = 4194304
	CLSCTX_ACTIVATE_AAA_AS_IU     = 8388608
	CLSCTX_PS_DLL                 = -2147483648
)

const ( /* wtypesbase.h:297:1: */
	MSHLFLAGS_NORMAL      = 0
	MSHLFLAGS_TABLESTRONG = 1
	MSHLFLAGS_TABLEWEAK   = 2
	MSHLFLAGS_NOPING      = 4
	MSHLFLAGS_RESERVED1   = 8
	MSHLFLAGS_RESERVED2   = 16
	MSHLFLAGS_RESERVED3   = 32
	MSHLFLAGS_RESERVED4   = 64
)

const ( /* wtypesbase.h:308:1: */
	MSHCTX_LOCAL            = 0
	MSHCTX_NOSHAREDMEM      = 1
	MSHCTX_DIFFERENTMACHINE = 2
	MSHCTX_INPROC           = 3
	MSHCTX_CROSSCTX         = 4
)

type ptrdiff_t = int32 /* <builtin>:3:26 */

type size_t = uint32 /* <builtin>:9:23 */

type wchar_t = uint16 /* <builtin>:15:24 */

type va_list = uintptr /* <builtin>:51:27 */

type ssize_t = int32 /* crtdefs.h:47:13 */

type rsize_t = size_t /* crtdefs.h:52:16 */

type intptr_t = int32 /* crtdefs.h:64:13 */

type uintptr_t = uint32 /* crtdefs.h:77:22 */

type wint_t = uint16   /* crtdefs.h:106:24 */
type wctype_t = uint16 /* crtdefs.h:107:24 */

type errno_t = int32 /* crtdefs.h:113:13 */

type time_t = int64 /* crtdefs.h:138:20 */

type threadlocaleinfostruct = struct {
	refcount      int32
	lc_codepage   uint32
	lc_collate_cp uint32
	lc_handle     [6]uint32
	lc_id         [6]LC_ID
	lc_category   [6]struct {
		locale    uintptr
		wlocale   uintptr
		refcount  uintptr
		wrefcount uintptr
	}
	lc_clike            int32
	mb_cur_max          int32
	lconv_intl_refcount uintptr
	lconv_num_refcount  uintptr
	lconv_mon_refcount  uintptr
	lconv               uintptr
	ctype1_refcount     uintptr
	ctype1              uintptr
	pctype              uintptr
	pclmap              uintptr
	pcumap              uintptr
	lc_time_curr        uintptr
} /* crtdefs.h:422:1 */

type pthreadlocinfo = uintptr /* crtdefs.h:424:39 */
type pthreadmbcinfo = uintptr /* crtdefs.h:425:36 */

type localeinfo_struct = struct {
	locinfo pthreadlocinfo
	mbcinfo pthreadmbcinfo
} /* crtdefs.h:428:9 */

type _locale_tstruct = localeinfo_struct /* crtdefs.h:431:3 */
type _locale_t = uintptr                 /* crtdefs.h:431:19 */

type tagLC_ID = struct {
	wLanguage uint16
	wCountry  uint16
	wCodePage uint16
} /* crtdefs.h:422:1 */

type LC_ID = tagLC_ID  /* crtdefs.h:439:3 */
type LPLC_ID = uintptr /* crtdefs.h:439:9 */

type lconv = struct {
	decimal_point     uintptr
	thousands_sep     uintptr
	grouping          uintptr
	int_curr_symbol   uintptr
	currency_symbol   uintptr
	mon_decimal_point uintptr
	mon_thousands_sep uintptr
	mon_grouping      uintptr
	positive_sign     uintptr
	negative_sign     uintptr
	int_frac_digits   int8
	frac_digits       int8
	p_cs_precedes     int8
	p_sep_by_space    int8
	n_cs_precedes     int8
	n_sep_by_space    int8
	p_sign_posn       int8
	n_sign_posn       int8
} /* crtdefs.h:461:3 */

type threadlocinfo = threadlocaleinfostruct /* crtdefs.h:468:3 */

type _EXCEPTION_POINTERS = struct {
	ExceptionRecord PEXCEPTION_RECORD
	ContextRecord   PCONTEXT
} /* excpt.h:17:3 */

type _EXCEPTION_RECORD = struct {
	ExceptionCode        DWORD
	ExceptionFlags       DWORD
	ExceptionRecord      uintptr
	ExceptionAddress     PVOID
	NumberParameters     DWORD
	ExceptionInformation [15]ULONG_PTR
} /* excpt.h:17:3 */

type _CONTEXT = struct {
	ContextFlags      DWORD
	Dr0               DWORD
	Dr1               DWORD
	Dr2               DWORD
	Dr3               DWORD
	Dr6               DWORD
	Dr7               DWORD
	FloatSave         FLOATING_SAVE_AREA
	SegGs             DWORD
	SegFs             DWORD
	SegEs             DWORD
	SegDs             DWORD
	Edi               DWORD
	Esi               DWORD
	Ebx               DWORD
	Edx               DWORD
	Ecx               DWORD
	Eax               DWORD
	Ebp               DWORD
	Eip               DWORD
	SegCs             DWORD
	EFlags            DWORD
	Esp               DWORD
	SegSs             DWORD
	ExtendedRegisters [512]BYTE
} /* excpt.h:17:3 */

// CRT stuff
type _PHNDLR = uintptr /* excpt.h:66:16 */

type _XCPT_ACTION = struct {
	XcptNum    uint32
	SigNum     int32
	XcptAction _PHNDLR
} /* excpt.h:68:3 */

// The type of function that is expected as an exception handler to be
// installed with __try1.
type PEXCEPTION_HANDLER = uintptr /* excpt.h:87:33 */

// Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with GCC; see the file COPYING.  If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.

// As a special exception, if you include this header file into source
//    files compiled by GCC, this header file does not by itself cause
//    the resulting executable to be covered by the GNU General Public
//    License.  This exception does not however invalidate any other
//    reasons why the executable file might be covered by the GNU General
//    Public License.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// Define __gnuc_va_list.

// Define the standard macros for the user,
//    if this invocation was from the user program.

// Define va_list, if desired, from __gnuc_va_list.
// We deliberately do not define va_list when called from
//    stdio.h, because ANSI C says that stdio.h is not supposed to define
//    va_list.  stdio.h needs to have access to that data type,
//    but must not use that name.  It should use the name __gnuc_va_list,
//    which is safe because it is reserved for the implementation.

// The macro _VA_LIST_ is the same thing used by this file in Ultrix.
//    But on BSD NET2 we must not test or define or undef it.
//    (Note that the comments in NET 2's ansi.h
//    are incorrect for _VA_LIST_--see stdio.h!)
// The macro _VA_LIST_DEFINED is used in Windows NT 3.5

// include mingw stuff
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// WINAPI_FAMILY can be either desktop + App, or App.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Pointer parameters

// Optional pointer parameters

// Output pointer parameters

// Output reference parameters

// Return values

// Other common annotations

// Function annotations

// Success/failure annotations

// Buffer properties

// Field properties

// Structural annotations

// printf/scanf annotations

// Analysis

// FIXME: __in macro conflicts with argument names in libstdc++. For this reason,
// we disable it for C++. This should be fixed in libstdc++ so we can uncomment
// it in fixed version here.

// Renamed __null to SAL__null for avoiding private keyword conflicts between
//    gcc and MS world.

// PROJECT:         ReactOS DDK
// COPYRIGHT:       This file is in the Public Domain.
// FILE:            driverspecs.h
// ABSTRACT:        This header stubs out Driver Verifier annotations to
//                  allow drivers using them to compile with our header set.

// Stubs

type ULONG = uint32    /* minwindef.h:24:29 */
type PULONG = uintptr  /* minwindef.h:25:17 */
type USHORT = uint16   /* minwindef.h:26:26 */
type PUSHORT = uintptr /* minwindef.h:27:18 */
type UCHAR = uint8     /* minwindef.h:28:25 */
type PUCHAR = uintptr  /* minwindef.h:29:17 */
type PSZ = uintptr     /* minwindef.h:30:16 */

type WINBOOL = int32  /* minwindef.h:127:13 */
type BOOL = int32     /* minwindef.h:131:15 */
type PBOOL = uintptr  /* minwindef.h:134:14 */
type LPBOOL = uintptr /* minwindef.h:135:14 */

type BYTE = uint8      /* minwindef.h:139:25 */
type WORD = uint16     /* minwindef.h:140:26 */
type DWORD = uint32    /* minwindef.h:141:29 */
type FLOAT = float32   /* minwindef.h:142:17 */
type PFLOAT = uintptr  /* minwindef.h:143:17 */
type PBYTE = uintptr   /* minwindef.h:144:16 */
type LPBYTE = uintptr  /* minwindef.h:145:16 */
type PINT = uintptr    /* minwindef.h:146:15 */
type LPINT = uintptr   /* minwindef.h:147:15 */
type PWORD = uintptr   /* minwindef.h:148:16 */
type LPWORD = uintptr  /* minwindef.h:149:16 */
type LPLONG = uintptr  /* minwindef.h:150:20 */
type PDWORD = uintptr  /* minwindef.h:151:17 */
type LPDWORD = uintptr /* minwindef.h:152:17 */
type LPVOID = uintptr  /* minwindef.h:153:16 */
type LPCVOID = uintptr /* minwindef.h:156:22 */
type INT = int32       /* minwindef.h:158:15 */
type UINT = uint32     /* minwindef.h:159:24 */
type PUINT = uintptr   /* minwindef.h:160:24 */

// *
// sdkddkver.h: Version definitions for SDK and DDK. Originally
// from ReactOS PSDK/DDK, this file is in the public domain:
//
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type POINTER_64_INT = uint32 /* basetsd.h:13:23 */

type INT8 = int8        /* basetsd.h:29:23 */
type PINT8 = uintptr    /* basetsd.h:29:28 */
type INT16 = int16      /* basetsd.h:30:24 */
type PINT16 = uintptr   /* basetsd.h:30:30 */
type INT32 = int32      /* basetsd.h:31:22 */
type PINT32 = uintptr   /* basetsd.h:31:28 */
type INT64 = int64      /* basetsd.h:32:44 */
type PINT64 = uintptr   /* basetsd.h:32:50 */
type UINT8 = uint8      /* basetsd.h:33:25 */
type PUINT8 = uintptr   /* basetsd.h:33:31 */
type UINT16 = uint16    /* basetsd.h:34:26 */
type PUINT16 = uintptr  /* basetsd.h:34:33 */
type UINT32 = uint32    /* basetsd.h:35:24 */
type PUINT32 = uintptr  /* basetsd.h:35:31 */
type UINT64 = uint64    /* basetsd.h:36:46 */
type PUINT64 = uintptr  /* basetsd.h:36:53 */
type LONG32 = int32     /* basetsd.h:37:22 */
type PLONG32 = uintptr  /* basetsd.h:37:29 */
type ULONG32 = uint32   /* basetsd.h:38:24 */
type PULONG32 = uintptr /* basetsd.h:38:32 */
type DWORD32 = uint32   /* basetsd.h:39:24 */
type PDWORD32 = uintptr /* basetsd.h:39:32 */

type INT_PTR = int32      /* basetsd.h:52:15 */
type PINT_PTR = uintptr   /* basetsd.h:52:23 */
type UINT_PTR = uint32    /* basetsd.h:53:24 */
type PUINT_PTR = uintptr  /* basetsd.h:53:33 */
type LONG_PTR = int32     /* basetsd.h:54:16 */
type PLONG_PTR = uintptr  /* basetsd.h:54:25 */
type ULONG_PTR = uint32   /* basetsd.h:55:25 */
type PULONG_PTR = uintptr /* basetsd.h:55:35 */

type UHALF_PTR = uint16   /* basetsd.h:97:26 */
type PUHALF_PTR = uintptr /* basetsd.h:97:36 */
type HALF_PTR = int16     /* basetsd.h:98:17 */
type PHALF_PTR = uintptr  /* basetsd.h:98:26 */
type SHANDLE_PTR = int32  /* basetsd.h:99:20 */
type HANDLE_PTR = uint32  /* basetsd.h:100:29 */

type SIZE_T = ULONG_PTR /* basetsd.h:147:39 */
type PSIZE_T = uintptr  /* basetsd.h:147:46 */
type SSIZE_T = LONG_PTR /* basetsd.h:148:38 */
type PSSIZE_T = uintptr /* basetsd.h:148:46 */

type DWORD_PTR = ULONG_PTR /* basetsd.h:191:39 */
type PDWORD_PTR = uintptr  /* basetsd.h:191:49 */
type LONG64 = int64        /* basetsd.h:192:37 */
type PLONG64 = uintptr     /* basetsd.h:192:44 */
type ULONG64 = uint64      /* basetsd.h:193:46 */
type PULONG64 = uintptr    /* basetsd.h:193:54 */
type DWORD64 = uint64      /* basetsd.h:194:46 */
type PDWORD64 = uintptr    /* basetsd.h:194:54 */
type KAFFINITY = ULONG_PTR /* basetsd.h:195:39 */
type PKAFFINITY = uintptr  /* basetsd.h:196:39 */

type PVOID = uintptr   /* winnt.h:257:16 */
type PVOID64 = uintptr /* winnt.h:258:16 */

type CHAR = int8   /* winnt.h:285:16 */
type SHORT = int16 /* winnt.h:286:17 */
type LONG = int32  /* winnt.h:287:20 */

type WCHAR = wchar_t     /* winnt.h:295:19 */
type PWCHAR = uintptr    /* winnt.h:297:17 */
type LPWCH = uintptr     /* winnt.h:297:25 */
type PWCH = uintptr      /* winnt.h:297:32 */
type LPCWCH = uintptr    /* winnt.h:298:23 */
type PCWCH = uintptr     /* winnt.h:298:31 */
type NWPSTR = uintptr    /* winnt.h:299:17 */
type LPWSTR = uintptr    /* winnt.h:299:25 */
type PWSTR = uintptr     /* winnt.h:299:33 */
type PZPWSTR = uintptr   /* winnt.h:300:17 */
type PCZPWSTR = uintptr  /* winnt.h:301:23 */
type LPUWSTR = uintptr   /* winnt.h:302:27 */
type PUWSTR = uintptr    /* winnt.h:302:36 */
type LPCWSTR = uintptr   /* winnt.h:303:23 */
type PCWSTR = uintptr    /* winnt.h:303:32 */
type PZPCWSTR = uintptr  /* winnt.h:304:18 */
type LPCUWSTR = uintptr  /* winnt.h:305:33 */
type PCUWSTR = uintptr   /* winnt.h:305:43 */
type PZZWSTR = uintptr   /* winnt.h:306:17 */
type PCZZWSTR = uintptr  /* winnt.h:307:23 */
type PUZZWSTR = uintptr  /* winnt.h:308:27 */
type PCUZZWSTR = uintptr /* winnt.h:309:33 */
type PNZWCH = uintptr    /* winnt.h:310:17 */
type PCNZWCH = uintptr   /* winnt.h:311:23 */
type PUNZWCH = uintptr   /* winnt.h:312:27 */
type PCUNZWCH = uintptr  /* winnt.h:313:33 */

type PCHAR = uintptr   /* winnt.h:334:16 */
type LPCH = uintptr    /* winnt.h:334:23 */
type PCH = uintptr     /* winnt.h:334:29 */
type LPCCH = uintptr   /* winnt.h:335:22 */
type PCCH = uintptr    /* winnt.h:335:29 */
type NPSTR = uintptr   /* winnt.h:336:16 */
type LPSTR = uintptr   /* winnt.h:336:23 */
type PSTR = uintptr    /* winnt.h:336:30 */
type PZPSTR = uintptr  /* winnt.h:337:16 */
type PCZPSTR = uintptr /* winnt.h:338:22 */
type LPCSTR = uintptr  /* winnt.h:339:22 */
type PCSTR = uintptr   /* winnt.h:339:30 */
type PZPCSTR = uintptr /* winnt.h:340:17 */
type PZZSTR = uintptr  /* winnt.h:341:16 */
type PCZZSTR = uintptr /* winnt.h:342:22 */
type PNZCH = uintptr   /* winnt.h:343:16 */
type PCNZCH = uintptr  /* winnt.h:344:22 */

type TCHAR = WCHAR    /* winnt.h:349:17 */
type PTCHAR = uintptr /* winnt.h:349:24 */
type TBYTE = WCHAR    /* winnt.h:350:17 */
type PTBYTE = uintptr /* winnt.h:350:24 */

type LPTCH = LPWSTR        /* winnt.h:353:18 */
type PTCH = LPWSTR         /* winnt.h:353:24 */
type PTSTR = LPWSTR        /* winnt.h:354:18 */
type LPTSTR = LPWSTR       /* winnt.h:354:24 */
type PCTSTR = LPCWSTR      /* winnt.h:355:19 */
type LPCTSTR = LPCWSTR     /* winnt.h:355:26 */
type PUTSTR = LPUWSTR      /* winnt.h:356:19 */
type LPUTSTR = LPUWSTR     /* winnt.h:356:26 */
type PCUTSTR = LPCUWSTR    /* winnt.h:357:20 */
type LPCUTSTR = LPCUWSTR   /* winnt.h:357:28 */
type LP = LPWSTR           /* winnt.h:358:18 */
type PZZTSTR = PZZWSTR     /* winnt.h:359:19 */
type PCZZTSTR = PCZZWSTR   /* winnt.h:360:20 */
type PUZZTSTR = PUZZWSTR   /* winnt.h:361:20 */
type PCUZZTSTR = PCUZZWSTR /* winnt.h:362:21 */
type PZPTSTR = PZPWSTR     /* winnt.h:363:19 */
type PNZTCH = PNZWCH       /* winnt.h:364:18 */
type PCNZTCH = PCNZWCH     /* winnt.h:365:19 */
type PUNZTCH = PUNZWCH     /* winnt.h:366:19 */
type PCUNZTCH = PCUNZWCH   /* winnt.h:367:20 */

type PSHORT = uintptr /* winnt.h:392:17 */
type PLONG = uintptr  /* winnt.h:393:16 */

type _GROUP_AFFINITY = struct {
	Mask     KAFFINITY
	Group    WORD
	Reserved [3]WORD
} /* winnt.h:397:9 */

type GROUP_AFFINITY = _GROUP_AFFINITY /* winnt.h:401:3 */
type PGROUP_AFFINITY = uintptr        /* winnt.h:401:19 */

type HANDLE = uintptr /* winnt.h:405:16 */

type PHANDLE = uintptr /* winnt.h:412:18 */
type FCHAR = BYTE      /* winnt.h:413:16 */
type FSHORT = WORD     /* winnt.h:414:16 */
type FLONG = DWORD     /* winnt.h:415:17 */

type HRESULT = LONG /* winnt.h:419:16 */

// Keep in sync with basetyps.h header.

type CCHAR = int8   /* winnt.h:453:16 */
type LCID = DWORD   /* winnt.h:456:15 */
type PLCID = PDWORD /* winnt.h:458:18 */
type LANGID = WORD  /* winnt.h:461:16 */

type COMPARTMENT_ID = uint32   /* winnt.h:470:3 */
type PCOMPARTMENT_ID = uintptr /* winnt.h:470:18 */

type _FLOAT128 = struct {
	LowPart  int64
	HighPart int64
} /* winnt.h:482:13 */

type FLOAT128 = _FLOAT128 /* winnt.h:485:5 */

type PFLOAT128 = uintptr /* winnt.h:487:20 */

type LONGLONG = int64   /* winnt.h:490:37 */
type ULONGLONG = uint64 /* winnt.h:491:46 */

type PLONGLONG = uintptr  /* winnt.h:495:20 */
type PULONGLONG = uintptr /* winnt.h:496:21 */
type USN = LONGLONG       /* winnt.h:497:20 */

type _LARGE_INTEGER = struct {
	_   [0]uint64
	__0 struct {
		LowPart  DWORD
		HighPart LONG
	}
} /* winnt.h:505:11 */

type LARGE_INTEGER = _LARGE_INTEGER /* winnt.h:516:5 */

type PLARGE_INTEGER = uintptr /* winnt.h:518:25 */

type _ULARGE_INTEGER = struct {
	_   [0]uint64
	__0 struct {
		LowPart  DWORD
		HighPart DWORD
	}
} /* winnt.h:523:11 */

type ULARGE_INTEGER = _ULARGE_INTEGER /* winnt.h:534:5 */

type PULARGE_INTEGER = uintptr /* winnt.h:536:26 */

type _LUID = struct {
	LowPart  DWORD
	HighPart LONG
} /* winnt.h:538:11 */

type LUID = _LUID    /* winnt.h:541:5 */
type PLUID = uintptr /* winnt.h:541:10 */

type DWORDLONG = ULONGLONG /* winnt.h:546:21 */
type PDWORDLONG = uintptr  /* winnt.h:547:21 */

type BOOLEAN = BYTE     /* winnt.h:605:16 */
type PBOOLEAN = uintptr /* winnt.h:607:19 */

type _LIST_ENTRY = struct {
	Flink uintptr
	Blink uintptr
} /* winnt.h:612:11 */

type LIST_ENTRY = _LIST_ENTRY /* winnt.h:615:5 */
type PLIST_ENTRY = uintptr    /* winnt.h:615:16 */
type PRLIST_ENTRY = uintptr   /* winnt.h:615:29 */

type _SINGLE_LIST_ENTRY = struct{ Next uintptr } /* winnt.h:617:11 */

type SINGLE_LIST_ENTRY = _SINGLE_LIST_ENTRY /* winnt.h:619:5 */
type PSINGLE_LIST_ENTRY = uintptr           /* winnt.h:619:23 */

type LIST_ENTRY321 = struct {
	Flink DWORD
	Blink DWORD
} /* winnt.h:621:11 */

type LIST_ENTRY32 = LIST_ENTRY321 /* winnt.h:624:5 */
type PLIST_ENTRY32 = uintptr      /* winnt.h:625:24 */

type LIST_ENTRY641 = struct {
	Flink ULONGLONG
	Blink ULONGLONG
} /* winnt.h:627:11 */

type LIST_ENTRY64 = LIST_ENTRY641 /* winnt.h:630:5 */
type PLIST_ENTRY64 = uintptr      /* winnt.h:631:24 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Make sure __LONG32 is defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _GUID = struct {
	Data1 uint32
	Data2 uint16
	Data3 uint16
	Data4 [8]uint8
} /* guiddef.h:19:9 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Make sure __LONG32 is defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type GUID = _GUID /* guiddef.h:24:3 */

// __declspec(selectany) must be applied to initialized objects on GCC 5 hence must not be used here.

type LPGUID = uintptr /* guiddef.h:77:14 */

type LPCGUID = uintptr /* guiddef.h:82:20 */

type IID = GUID      /* guiddef.h:88:14 */
type LPIID = uintptr /* guiddef.h:89:13 */

type CLSID = GUID /* guiddef.h:96:14 */

type LPCLSID = uintptr /* guiddef.h:99:15 */

type FMTID = GUID      /* guiddef.h:103:14 */
type LPFMTID = uintptr /* guiddef.h:104:15 */

type _OBJECTID = struct {
	Lineage    GUID
	Uniquifier DWORD
} /* winnt.h:639:11 */

type OBJECTID = _OBJECTID         /* winnt.h:642:5 */
type PEXCEPTION_ROUTINE = uintptr /* winnt.h:709:31 */

// ??? #define SUBLANG_ROMANIAN_MOLDOVA                  0x01 ???

type KSPIN_LOCK = ULONG_PTR /* winnt.h:1383:21 */
type PKSPIN_LOCK = uintptr  /* winnt.h:1384:22 */

type _M128A = struct {
	Low  ULONGLONG
	High LONGLONG
} /* winnt.h:1386:13 */

type M128A = _M128A   /* winnt.h:1389:7 */
type PM128A = uintptr /* winnt.h:1389:13 */

type _XSAVE_FORMAT = struct {
	ControlWord    WORD
	StatusWord     WORD
	TagWord        BYTE
	Reserved1      BYTE
	ErrorOpcode    WORD
	ErrorOffset    DWORD
	ErrorSelector  WORD
	Reserved2      WORD
	DataOffset     DWORD
	DataSelector   WORD
	Reserved3      WORD
	MxCsr          DWORD
	MxCsr_Mask     DWORD
	FloatRegisters [8]M128A
	XmmRegisters   [8]M128A
	Reserved4      [220]BYTE
	Cr0NpxState    DWORD
} /* winnt.h:1391:13 */

type XSAVE_FORMAT = _XSAVE_FORMAT /* winnt.h:1414:7 */
type PXSAVE_FORMAT = uintptr      /* winnt.h:1414:20 */

type _XSAVE_AREA_HEADER = struct {
	Mask     DWORD64
	Reserved [7]DWORD64
} /* winnt.h:1416:13 */

type XSAVE_AREA_HEADER = _XSAVE_AREA_HEADER /* winnt.h:1419:7 */
type PXSAVE_AREA_HEADER = uintptr           /* winnt.h:1419:25 */

type _XSAVE_AREA = struct {
	LegacyState XSAVE_FORMAT
	Header      XSAVE_AREA_HEADER
} /* winnt.h:1421:13 */

type XSAVE_AREA = _XSAVE_AREA /* winnt.h:1424:7 */
type PXSAVE_AREA = uintptr    /* winnt.h:1424:18 */

type _XSTATE_CONTEXT = struct {
	Mask      DWORD64
	Length    DWORD
	Reserved1 DWORD
	Area      PXSAVE_AREA
	Reserved2 DWORD
	Buffer    PVOID
	Reserved3 DWORD
} /* winnt.h:1426:13 */

type XSTATE_CONTEXT = _XSTATE_CONTEXT /* winnt.h:1438:7 */
type PXSTATE_CONTEXT = uintptr        /* winnt.h:1438:22 */

type _SCOPE_TABLE_AMD64 = struct {
	Count       DWORD
	ScopeRecord [1]struct {
		BeginAddress   DWORD
		EndAddress     DWORD
		HandlerAddress DWORD
		JumpTarget     DWORD
	}
} /* winnt.h:1440:13 */

type SCOPE_TABLE_AMD64 = _SCOPE_TABLE_AMD64 /* winnt.h:1448:7 */
type PSCOPE_TABLE_AMD64 = uintptr           /* winnt.h:1448:25 */

type _FLOATING_SAVE_AREA = struct {
	ControlWord   DWORD
	StatusWord    DWORD
	TagWord       DWORD
	ErrorOffset   DWORD
	ErrorSelector DWORD
	DataOffset    DWORD
	DataSelector  DWORD
	RegisterArea  [80]BYTE
	Cr0NpxState   DWORD
} /* excpt.h:17:3 */

type FLOATING_SAVE_AREA = _FLOATING_SAVE_AREA /* winnt.h:2371:7 */

type PFLOATING_SAVE_AREA = uintptr /* winnt.h:2373:32 */

type CONTEXT = _CONTEXT /* winnt.h:2402:7 */

type PCONTEXT = uintptr /* winnt.h:2404:21 */

// LONG WINAPI InterlockedIncrement(LONG volatile *); moved to psdk_inc/intrin-impl.h
// LONG WINAPI InterlockedDecrement(LONG volatile *); moved to psdk_inc/intrin-impl.h
// LONG WINAPI InterlockedExchange(LONG volatile *, LONG); moved to psdk_inc/intrin-impl.h

type _LDT_ENTRY = struct {
	LimitLow WORD
	BaseLow  WORD
	HighWord struct {
		_     [0]uint32
		Bytes struct {
			BaseMid BYTE
			Flags1  BYTE
			Flags2  BYTE
			BaseHi  BYTE
		}
	}
} /* winnt.h:2415:13 */

// LONG WINAPI InterlockedIncrement(LONG volatile *); moved to psdk_inc/intrin-impl.h
// LONG WINAPI InterlockedDecrement(LONG volatile *); moved to psdk_inc/intrin-impl.h
// LONG WINAPI InterlockedExchange(LONG volatile *, LONG); moved to psdk_inc/intrin-impl.h

type LDT_ENTRY = _LDT_ENTRY /* winnt.h:2438:7 */
type PLDT_ENTRY = uintptr   /* winnt.h:2438:17 */

// http://www.nynaeve.net/?p=99

type EXCEPTION_RECORD = _EXCEPTION_RECORD /* winnt.h:2783:7 */

type PEXCEPTION_RECORD = uintptr /* winnt.h:2785:30 */

type _EXCEPTION_RECORD32 = struct {
	ExceptionCode        DWORD
	ExceptionFlags       DWORD
	ExceptionRecord      DWORD
	ExceptionAddress     DWORD
	NumberParameters     DWORD
	ExceptionInformation [15]DWORD
} /* winnt.h:2787:13 */

type EXCEPTION_RECORD32 = _EXCEPTION_RECORD32 /* winnt.h:2794:7 */
type PEXCEPTION_RECORD32 = uintptr            /* winnt.h:2794:26 */

type _EXCEPTION_RECORD64 = struct {
	ExceptionCode        DWORD
	ExceptionFlags       DWORD
	ExceptionRecord      DWORD64
	ExceptionAddress     DWORD64
	NumberParameters     DWORD
	__unusedAlignment    DWORD
	ExceptionInformation [15]DWORD64
} /* winnt.h:2796:13 */

type EXCEPTION_RECORD64 = _EXCEPTION_RECORD64 /* winnt.h:2804:7 */
type PEXCEPTION_RECORD64 = uintptr            /* winnt.h:2804:26 */

type EXCEPTION_POINTERS = _EXCEPTION_POINTERS /* winnt.h:2809:7 */
type PEXCEPTION_POINTERS = uintptr            /* winnt.h:2809:26 */

type PACCESS_TOKEN = PVOID        /* winnt.h:2871:19 */
type PSECURITY_DESCRIPTOR = PVOID /* winnt.h:2872:19 */
type PSID = PVOID                 /* winnt.h:2873:19 */
type PCLAIMS_BLOB = PVOID         /* winnt.h:2874:19 */
type ACCESS_MASK = DWORD          /* winnt.h:2875:19 */
type PACCESS_MASK = uintptr       /* winnt.h:2876:25 */

type _GENERIC_MAPPING = struct {
	GenericRead    ACCESS_MASK
	GenericWrite   ACCESS_MASK
	GenericExecute ACCESS_MASK
	GenericAll     ACCESS_MASK
} /* winnt.h:2902:13 */

type GENERIC_MAPPING = _GENERIC_MAPPING /* winnt.h:2907:7 */
type PGENERIC_MAPPING = uintptr         /* winnt.h:2908:29 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type _LUID_AND_ATTRIBUTES = struct {
	Luid       LUID
	Attributes DWORD
} /* winnt.h:2911:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type LUID_AND_ATTRIBUTES = _LUID_AND_ATTRIBUTES         /* winnt.h:2914:7 */
type PLUID_AND_ATTRIBUTES = uintptr                     /* winnt.h:2914:27 */
type LUID_AND_ATTRIBUTES_ARRAY = [1]LUID_AND_ATTRIBUTES /* winnt.h:2915:33 */
type PLUID_AND_ATTRIBUTES_ARRAY = uintptr               /* winnt.h:2916:39 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _SID_IDENTIFIER_AUTHORITY = struct{ Value [6]BYTE } /* winnt.h:2921:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type SID_IDENTIFIER_AUTHORITY = _SID_IDENTIFIER_AUTHORITY /* winnt.h:2923:7 */
type PSID_IDENTIFIER_AUTHORITY = uintptr                  /* winnt.h:2923:32 */

type _SID = struct {
	Revision            BYTE
	SubAuthorityCount   BYTE
	IdentifierAuthority SID_IDENTIFIER_AUTHORITY
	SubAuthority        [1]DWORD
} /* winnt.h:2928:13 */

type SID = _SID      /* winnt.h:2933:7 */
type PISID = uintptr /* winnt.h:2933:11 */

type SID_NAME_USE = uint32   /* winnt.h:2947:7 */
type PSID_NAME_USE = uintptr /* winnt.h:2947:20 */

type _SID_AND_ATTRIBUTES = struct {
	Sid        PSID
	Attributes DWORD
} /* winnt.h:2949:13 */

type SID_AND_ATTRIBUTES = _SID_AND_ATTRIBUTES /* winnt.h:2956:7 */
type PSID_AND_ATTRIBUTES = uintptr            /* winnt.h:2956:26 */

type SID_AND_ATTRIBUTES_ARRAY = [1]SID_AND_ATTRIBUTES /* winnt.h:2958:32 */
type PSID_AND_ATTRIBUTES_ARRAY = uintptr              /* winnt.h:2959:38 */

type SID_HASH_ENTRY = ULONG_PTR /* winnt.h:2961:23 */
type PSID_HASH_ENTRY = uintptr  /* winnt.h:2961:39 */

type _SID_AND_ATTRIBUTES_HASH = struct {
	SidCount DWORD
	SidAttr  PSID_AND_ATTRIBUTES
	Hash     [32]SID_HASH_ENTRY
} /* winnt.h:2963:13 */

type SID_AND_ATTRIBUTES_HASH = _SID_AND_ATTRIBUTES_HASH /* winnt.h:2967:7 */
type PSID_AND_ATTRIBUTES_HASH = uintptr                 /* winnt.h:2967:32 */

type WELL_KNOWN_SID_TYPE = uint32 /* winnt.h:3251:3 */

type _ACL = struct {
	AclRevision BYTE
	Sbz1        BYTE
	AclSize     WORD
	AceCount    WORD
	Sbz2        WORD
} /* winnt.h:3281:13 */

type ACL = _ACL     /* winnt.h:3287:7 */
type PACL = uintptr /* winnt.h:3288:17 */

type _ACE_HEADER = struct {
	AceType  BYTE
	AceFlags BYTE
	AceSize  WORD
} /* winnt.h:3290:13 */

type ACE_HEADER = _ACE_HEADER /* winnt.h:3294:7 */
type PACE_HEADER = uintptr    /* winnt.h:3295:24 */

type _ACCESS_ALLOWED_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3341:13 */

type ACCESS_ALLOWED_ACE = _ACCESS_ALLOWED_ACE /* winnt.h:3345:7 */

type PACCESS_ALLOWED_ACE = uintptr /* winnt.h:3347:32 */

type _ACCESS_DENIED_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3349:13 */

type ACCESS_DENIED_ACE = _ACCESS_DENIED_ACE /* winnt.h:3353:7 */
type PACCESS_DENIED_ACE = uintptr           /* winnt.h:3354:31 */

type _SYSTEM_AUDIT_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3356:13 */

type SYSTEM_AUDIT_ACE = _SYSTEM_AUDIT_ACE /* winnt.h:3360:7 */
type PSYSTEM_AUDIT_ACE = uintptr          /* winnt.h:3361:30 */

type _SYSTEM_ALARM_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3363:13 */

type SYSTEM_ALARM_ACE = _SYSTEM_ALARM_ACE /* winnt.h:3367:7 */
type PSYSTEM_ALARM_ACE = uintptr          /* winnt.h:3368:30 */

type _SYSTEM_RESOURCE_ATTRIBUTE_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3370:13 */

type SYSTEM_RESOURCE_ATTRIBUTE_ACE = _SYSTEM_RESOURCE_ATTRIBUTE_ACE /* winnt.h:3374:7 */
type PSYSTEM_RESOURCE_ATTRIBUTE_ACE = uintptr                       /* winnt.h:3374:37 */

type _SYSTEM_SCOPED_POLICY_ID_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3376:13 */

type SYSTEM_SCOPED_POLICY_ID_ACE = _SYSTEM_SCOPED_POLICY_ID_ACE /* winnt.h:3380:7 */
type PSYSTEM_SCOPED_POLICY_ID_ACE = uintptr                     /* winnt.h:3380:35 */

type _SYSTEM_MANDATORY_LABEL_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3382:13 */

type SYSTEM_MANDATORY_LABEL_ACE = _SYSTEM_MANDATORY_LABEL_ACE /* winnt.h:3386:7 */
type PSYSTEM_MANDATORY_LABEL_ACE = uintptr                    /* winnt.h:3386:35 */

type _ACCESS_ALLOWED_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3394:13 */

type ACCESS_ALLOWED_OBJECT_ACE = _ACCESS_ALLOWED_OBJECT_ACE /* winnt.h:3401:7 */
type PACCESS_ALLOWED_OBJECT_ACE = uintptr                   /* winnt.h:3401:33 */

type _ACCESS_DENIED_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3403:13 */

type ACCESS_DENIED_OBJECT_ACE = _ACCESS_DENIED_OBJECT_ACE /* winnt.h:3410:7 */
type PACCESS_DENIED_OBJECT_ACE = uintptr                  /* winnt.h:3410:32 */

type _SYSTEM_AUDIT_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3412:13 */

type SYSTEM_AUDIT_OBJECT_ACE = _SYSTEM_AUDIT_OBJECT_ACE /* winnt.h:3419:7 */
type PSYSTEM_AUDIT_OBJECT_ACE = uintptr                 /* winnt.h:3419:31 */

type _SYSTEM_ALARM_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3421:13 */

type SYSTEM_ALARM_OBJECT_ACE = _SYSTEM_ALARM_OBJECT_ACE /* winnt.h:3428:7 */
type PSYSTEM_ALARM_OBJECT_ACE = uintptr                 /* winnt.h:3428:31 */

type _ACCESS_ALLOWED_CALLBACK_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3430:13 */

type ACCESS_ALLOWED_CALLBACK_ACE = _ACCESS_ALLOWED_CALLBACK_ACE /* winnt.h:3434:7 */
type PACCESS_ALLOWED_CALLBACK_ACE = uintptr                     /* winnt.h:3434:35 */

type _ACCESS_DENIED_CALLBACK_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3436:13 */

type ACCESS_DENIED_CALLBACK_ACE = _ACCESS_DENIED_CALLBACK_ACE /* winnt.h:3440:7 */
type PACCESS_DENIED_CALLBACK_ACE = uintptr                    /* winnt.h:3440:34 */

type _SYSTEM_AUDIT_CALLBACK_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3442:13 */

type SYSTEM_AUDIT_CALLBACK_ACE = _SYSTEM_AUDIT_CALLBACK_ACE /* winnt.h:3446:7 */
type PSYSTEM_AUDIT_CALLBACK_ACE = uintptr                   /* winnt.h:3446:33 */

type _SYSTEM_ALARM_CALLBACK_ACE = struct {
	Header   ACE_HEADER
	Mask     ACCESS_MASK
	SidStart DWORD
} /* winnt.h:3448:13 */

type SYSTEM_ALARM_CALLBACK_ACE = _SYSTEM_ALARM_CALLBACK_ACE /* winnt.h:3452:7 */
type PSYSTEM_ALARM_CALLBACK_ACE = uintptr                   /* winnt.h:3452:33 */

type _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3454:13 */

type ACCESS_ALLOWED_CALLBACK_OBJECT_ACE = _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE /* winnt.h:3462:7 */
type PACCESS_ALLOWED_CALLBACK_OBJECT_ACE = uintptr                            /* winnt.h:3462:42 */

type _ACCESS_DENIED_CALLBACK_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3464:13 */

type ACCESS_DENIED_CALLBACK_OBJECT_ACE = _ACCESS_DENIED_CALLBACK_OBJECT_ACE /* winnt.h:3471:7 */
type PACCESS_DENIED_CALLBACK_OBJECT_ACE = uintptr                           /* winnt.h:3471:41 */

type _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3473:13 */

type SYSTEM_AUDIT_CALLBACK_OBJECT_ACE = _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE /* winnt.h:3480:7 */
type PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE = uintptr                          /* winnt.h:3480:40 */

type _SYSTEM_ALARM_CALLBACK_OBJECT_ACE = struct {
	Header              ACE_HEADER
	Mask                ACCESS_MASK
	Flags               DWORD
	ObjectType          GUID
	InheritedObjectType GUID
	SidStart            DWORD
} /* winnt.h:3482:13 */

type SYSTEM_ALARM_CALLBACK_OBJECT_ACE = _SYSTEM_ALARM_CALLBACK_OBJECT_ACE /* winnt.h:3490:7 */
type PSYSTEM_ALARM_CALLBACK_OBJECT_ACE = uintptr                          /* winnt.h:3490:40 */

type ACL_INFORMATION_CLASS = uint32 /* winnt.h:3497:7 */

type _ACL_REVISION_INFORMATION = struct{ AclRevision DWORD } /* winnt.h:3499:13 */

type ACL_REVISION_INFORMATION = _ACL_REVISION_INFORMATION /* winnt.h:3501:7 */
type PACL_REVISION_INFORMATION = uintptr                  /* winnt.h:3502:38 */

type _ACL_SIZE_INFORMATION = struct {
	AceCount      DWORD
	AclBytesInUse DWORD
	AclBytesFree  DWORD
} /* winnt.h:3504:13 */

type ACL_SIZE_INFORMATION = _ACL_SIZE_INFORMATION /* winnt.h:3508:7 */
type PACL_SIZE_INFORMATION = uintptr              /* winnt.h:3509:34 */

type SECURITY_DESCRIPTOR_CONTROL = WORD     /* winnt.h:3516:18 */
type PSECURITY_DESCRIPTOR_CONTROL = uintptr /* winnt.h:3516:46 */

type _SECURITY_DESCRIPTOR_RELATIVE = struct {
	Revision BYTE
	Sbz1     BYTE
	Control  SECURITY_DESCRIPTOR_CONTROL
	Owner    DWORD
	Group    DWORD
	Sacl     DWORD
	Dacl     DWORD
} /* winnt.h:3533:13 */

type SECURITY_DESCRIPTOR_RELATIVE = _SECURITY_DESCRIPTOR_RELATIVE /* winnt.h:3541:7 */
type PISECURITY_DESCRIPTOR_RELATIVE = uintptr                     /* winnt.h:3541:36 */

type _SECURITY_DESCRIPTOR = struct {
	Revision BYTE
	Sbz1     BYTE
	Control  SECURITY_DESCRIPTOR_CONTROL
	Owner    PSID
	Group    PSID
	Sacl     PACL
	Dacl     PACL
} /* winnt.h:3543:13 */

type SECURITY_DESCRIPTOR = _SECURITY_DESCRIPTOR /* winnt.h:3551:7 */
type PISECURITY_DESCRIPTOR = uintptr            /* winnt.h:3551:27 */

type _OBJECT_TYPE_LIST = struct {
	Level      WORD
	Sbz        WORD
	ObjectType uintptr
} /* winnt.h:3553:13 */

type OBJECT_TYPE_LIST = _OBJECT_TYPE_LIST /* winnt.h:3557:7 */
type POBJECT_TYPE_LIST = uintptr          /* winnt.h:3557:24 */

type AUDIT_EVENT_TYPE = uint32   /* winnt.h:3567:7 */
type PAUDIT_EVENT_TYPE = uintptr /* winnt.h:3567:24 */

type _PRIVILEGE_SET = struct {
	PrivilegeCount DWORD
	Control        DWORD
	Privilege      [1]LUID_AND_ATTRIBUTES
} /* winnt.h:3585:13 */

type PRIVILEGE_SET = _PRIVILEGE_SET /* winnt.h:3589:7 */
type PPRIVILEGE_SET = uintptr       /* winnt.h:3589:21 */

type ACCESS_REASON_TYPE = uint32 /* winnt.h:3614:7 */
type ACCESS_REASON = DWORD       /* winnt.h:3615:19 */

type _ACCESS_REASONS = struct{ Data [32]ACCESS_REASON } /* winnt.h:3617:13 */

type ACCESS_REASONS = _ACCESS_REASONS /* winnt.h:3619:7 */
type PACCESS_REASONS = uintptr        /* winnt.h:3619:22 */

type _SE_SECURITY_DESCRIPTOR = struct {
	Size               DWORD
	Flags              DWORD
	SecurityDescriptor PSECURITY_DESCRIPTOR
} /* winnt.h:3625:13 */

type SE_SECURITY_DESCRIPTOR = _SE_SECURITY_DESCRIPTOR /* winnt.h:3629:7 */
type PSE_SECURITY_DESCRIPTOR = uintptr                /* winnt.h:3629:30 */

type _SE_ACCESS_REQUEST = struct {
	Size                    DWORD
	SeSecurityDescriptor    PSE_SECURITY_DESCRIPTOR
	DesiredAccess           ACCESS_MASK
	PreviouslyGrantedAccess ACCESS_MASK
	PrincipalSelfSid        PSID
	GenericMapping          PGENERIC_MAPPING
	ObjectTypeListCount     DWORD
	ObjectTypeList          POBJECT_TYPE_LIST
} /* winnt.h:3631:13 */

type SE_ACCESS_REQUEST = _SE_ACCESS_REQUEST /* winnt.h:3640:7 */
type PSE_ACCESS_REQUEST = uintptr           /* winnt.h:3640:25 */

type _SE_ACCESS_REPLY = struct {
	Size            DWORD
	ResultListCount DWORD
	GrantedAccess   PACCESS_MASK
	AccessStatus    PDWORD
	AccessReason    PACCESS_REASONS
	Privileges      uintptr
} /* winnt.h:3642:13 */

type SE_ACCESS_REPLY = _SE_ACCESS_REPLY /* winnt.h:3649:7 */
type PSE_ACCESS_REPLY = uintptr         /* winnt.h:3649:23 */

type SECURITY_IMPERSONATION_LEVEL = uint32   /* winnt.h:3689:7 */
type PSECURITY_IMPERSONATION_LEVEL = uintptr /* winnt.h:3689:36 */

type TOKEN_TYPE = uint32   /* winnt.h:3716:7 */
type PTOKEN_TYPE = uintptr /* winnt.h:3717:24 */

type TOKEN_ELEVATION_TYPE = uint32   /* winnt.h:3723:7 */
type PTOKEN_ELEVATION_TYPE = uintptr /* winnt.h:3723:29 */

type TOKEN_INFORMATION_CLASS = uint32   /* winnt.h:3767:7 */
type PTOKEN_INFORMATION_CLASS = uintptr /* winnt.h:3767:31 */

type _TOKEN_USER = struct{ User SID_AND_ATTRIBUTES } /* winnt.h:3769:13 */

type TOKEN_USER = _TOKEN_USER /* winnt.h:3771:7 */
type PTOKEN_USER = uintptr    /* winnt.h:3771:18 */

type _TOKEN_GROUPS = struct {
	GroupCount DWORD
	Groups     [1]SID_AND_ATTRIBUTES
} /* winnt.h:3773:13 */

type TOKEN_GROUPS = _TOKEN_GROUPS /* winnt.h:3780:7 */
type PTOKEN_GROUPS = uintptr      /* winnt.h:3780:20 */

type _TOKEN_PRIVILEGES = struct {
	PrivilegeCount DWORD
	Privileges     [1]LUID_AND_ATTRIBUTES
} /* winnt.h:3782:13 */

type TOKEN_PRIVILEGES = _TOKEN_PRIVILEGES /* winnt.h:3785:7 */
type PTOKEN_PRIVILEGES = uintptr          /* winnt.h:3785:24 */

type _TOKEN_OWNER = struct{ Owner PSID } /* winnt.h:3787:13 */

type TOKEN_OWNER = _TOKEN_OWNER /* winnt.h:3789:7 */
type PTOKEN_OWNER = uintptr     /* winnt.h:3789:19 */

type _TOKEN_PRIMARY_GROUP = struct{ PrimaryGroup PSID } /* winnt.h:3791:13 */

type TOKEN_PRIMARY_GROUP = _TOKEN_PRIMARY_GROUP /* winnt.h:3793:7 */
type PTOKEN_PRIMARY_GROUP = uintptr             /* winnt.h:3793:27 */

type _TOKEN_DEFAULT_DACL = struct{ DefaultDacl PACL } /* winnt.h:3795:13 */

type TOKEN_DEFAULT_DACL = _TOKEN_DEFAULT_DACL /* winnt.h:3797:7 */
type PTOKEN_DEFAULT_DACL = uintptr            /* winnt.h:3797:26 */

type _TOKEN_USER_CLAIMS = struct{ UserClaims PCLAIMS_BLOB } /* winnt.h:3799:13 */

type TOKEN_USER_CLAIMS = _TOKEN_USER_CLAIMS /* winnt.h:3801:7 */
type PTOKEN_USER_CLAIMS = uintptr           /* winnt.h:3801:25 */

type _TOKEN_DEVICE_CLAIMS = struct{ DeviceClaims PCLAIMS_BLOB } /* winnt.h:3803:13 */

type TOKEN_DEVICE_CLAIMS = _TOKEN_DEVICE_CLAIMS /* winnt.h:3805:7 */
type PTOKEN_DEVICE_CLAIMS = uintptr             /* winnt.h:3805:27 */

type _TOKEN_GROUPS_AND_PRIVILEGES = struct {
	SidCount            DWORD
	SidLength           DWORD
	Sids                PSID_AND_ATTRIBUTES
	RestrictedSidCount  DWORD
	RestrictedSidLength DWORD
	RestrictedSids      PSID_AND_ATTRIBUTES
	PrivilegeCount      DWORD
	PrivilegeLength     DWORD
	Privileges          PLUID_AND_ATTRIBUTES
	AuthenticationId    LUID
} /* winnt.h:3807:13 */

type TOKEN_GROUPS_AND_PRIVILEGES = _TOKEN_GROUPS_AND_PRIVILEGES /* winnt.h:3818:7 */
type PTOKEN_GROUPS_AND_PRIVILEGES = uintptr                     /* winnt.h:3818:35 */

type _TOKEN_LINKED_TOKEN = struct{ LinkedToken HANDLE } /* winnt.h:3820:13 */

type TOKEN_LINKED_TOKEN = _TOKEN_LINKED_TOKEN /* winnt.h:3822:7 */
type PTOKEN_LINKED_TOKEN = uintptr            /* winnt.h:3822:26 */

type _TOKEN_ELEVATION = struct{ TokenIsElevated DWORD } /* winnt.h:3824:13 */

type TOKEN_ELEVATION = _TOKEN_ELEVATION /* winnt.h:3826:7 */
type PTOKEN_ELEVATION = uintptr         /* winnt.h:3826:23 */

type _TOKEN_MANDATORY_LABEL = struct{ Label SID_AND_ATTRIBUTES } /* winnt.h:3828:13 */

type TOKEN_MANDATORY_LABEL = _TOKEN_MANDATORY_LABEL /* winnt.h:3830:7 */
type PTOKEN_MANDATORY_LABEL = uintptr               /* winnt.h:3830:29 */

type _TOKEN_MANDATORY_POLICY = struct{ Policy DWORD } /* winnt.h:3838:13 */

type TOKEN_MANDATORY_POLICY = _TOKEN_MANDATORY_POLICY /* winnt.h:3840:7 */
type PTOKEN_MANDATORY_POLICY = uintptr                /* winnt.h:3840:30 */

type _TOKEN_ACCESS_INFORMATION = struct {
	SidHash            PSID_AND_ATTRIBUTES_HASH
	RestrictedSidHash  PSID_AND_ATTRIBUTES_HASH
	Privileges         PTOKEN_PRIVILEGES
	AuthenticationId   LUID
	TokenType          TOKEN_TYPE
	ImpersonationLevel SECURITY_IMPERSONATION_LEVEL
	MandatoryPolicy    TOKEN_MANDATORY_POLICY
	Flags              DWORD
	AppContainerNumber DWORD
	PackageSid         PSID
	CapabilitiesHash   PSID_AND_ATTRIBUTES_HASH
} /* winnt.h:3842:13 */

type TOKEN_ACCESS_INFORMATION = _TOKEN_ACCESS_INFORMATION /* winnt.h:3854:7 */
type PTOKEN_ACCESS_INFORMATION = uintptr                  /* winnt.h:3854:32 */

type _TOKEN_AUDIT_POLICY = struct{ PerUserPolicy [29]UCHAR } /* winnt.h:3858:13 */

type TOKEN_AUDIT_POLICY = _TOKEN_AUDIT_POLICY /* winnt.h:3860:7 */
type PTOKEN_AUDIT_POLICY = uintptr            /* winnt.h:3860:27 */

type _TOKEN_SOURCE = struct {
	SourceName       [8]CHAR
	SourceIdentifier LUID
} /* winnt.h:3864:13 */

type TOKEN_SOURCE = _TOKEN_SOURCE /* winnt.h:3867:7 */
type PTOKEN_SOURCE = uintptr      /* winnt.h:3867:20 */

type _TOKEN_STATISTICS = struct {
	TokenId            LUID
	AuthenticationId   LUID
	ExpirationTime     LARGE_INTEGER
	TokenType          TOKEN_TYPE
	ImpersonationLevel SECURITY_IMPERSONATION_LEVEL
	DynamicCharged     DWORD
	DynamicAvailable   DWORD
	GroupCount         DWORD
	PrivilegeCount     DWORD
	ModifiedId         LUID
} /* winnt.h:3869:13 */

type TOKEN_STATISTICS = _TOKEN_STATISTICS /* winnt.h:3880:7 */
type PTOKEN_STATISTICS = uintptr          /* winnt.h:3880:24 */

type _TOKEN_CONTROL = struct {
	TokenId          LUID
	AuthenticationId LUID
	ModifiedId       LUID
	TokenSource      TOKEN_SOURCE
} /* winnt.h:3882:13 */

type TOKEN_CONTROL = _TOKEN_CONTROL /* winnt.h:3887:7 */
type PTOKEN_CONTROL = uintptr       /* winnt.h:3887:21 */

type _TOKEN_ORIGIN = struct{ OriginatingLogonSession LUID } /* winnt.h:3889:13 */

type TOKEN_ORIGIN = _TOKEN_ORIGIN /* winnt.h:3891:7 */
type PTOKEN_ORIGIN = uintptr      /* winnt.h:3891:20 */

type MANDATORY_LEVEL = uint32   /* winnt.h:3901:7 */
type PMANDATORY_LEVEL = uintptr /* winnt.h:3901:23 */

type _TOKEN_APPCONTAINER_INFORMATION = struct{ TokenAppContainer PSID } /* winnt.h:3903:13 */

type TOKEN_APPCONTAINER_INFORMATION = _TOKEN_APPCONTAINER_INFORMATION /* winnt.h:3905:7 */
type PTOKEN_APPCONTAINER_INFORMATION = uintptr                        /* winnt.h:3905:38 */

type _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = struct {
	Version DWORD64
	Name    PWSTR
	_       [4]byte
} /* winnt.h:3915:13 */

type CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = _CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE /* winnt.h:3918:7 */
type PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE = uintptr                             /* winnt.h:3918:43 */

type _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE = struct {
	pValue      PVOID
	ValueLength DWORD
} /* winnt.h:3920:13 */

type CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE = _CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE /* winnt.h:3923:7 */
type PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE = uintptr                                     /* winnt.h:3923:52 */

type _CLAIM_SECURITY_ATTRIBUTE_V1 = struct {
	Name       PWSTR
	ValueType  WORD
	Reserved   WORD
	Flags      DWORD
	ValueCount DWORD
	Values     struct{ pInt64 PLONG64 }
} /* winnt.h:3936:13 */

type CLAIM_SECURITY_ATTRIBUTE_V1 = _CLAIM_SECURITY_ATTRIBUTE_V1 /* winnt.h:3949:7 */
type PCLAIM_SECURITY_ATTRIBUTE_V1 = uintptr                     /* winnt.h:3949:35 */

type _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = struct {
	Name       DWORD
	ValueType  WORD
	Reserved   WORD
	Flags      DWORD
	ValueCount DWORD
	Values     struct{ pInt64 [1]DWORD }
} /* winnt.h:3951:13 */

type CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = _CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 /* winnt.h:3964:7 */
type PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 = uintptr                              /* winnt.h:3964:44 */

type _CLAIM_SECURITY_ATTRIBUTES_INFORMATION = struct {
	Version        WORD
	Reserved       WORD
	AttributeCount DWORD
	Attribute      struct{ pAttributeV1 PCLAIM_SECURITY_ATTRIBUTE_V1 }
} /* winnt.h:3970:13 */

type CLAIM_SECURITY_ATTRIBUTES_INFORMATION = _CLAIM_SECURITY_ATTRIBUTES_INFORMATION /* winnt.h:3977:7 */
type PCLAIM_SECURITY_ATTRIBUTES_INFORMATION = uintptr                               /* winnt.h:3977:45 */

type SECURITY_CONTEXT_TRACKING_MODE = BOOLEAN  /* winnt.h:3982:21 */
type PSECURITY_CONTEXT_TRACKING_MODE = uintptr /* winnt.h:3982:52 */

type _SECURITY_QUALITY_OF_SERVICE = struct {
	Length              DWORD
	ImpersonationLevel  SECURITY_IMPERSONATION_LEVEL
	ContextTrackingMode SECURITY_CONTEXT_TRACKING_MODE
	EffectiveOnly       BOOLEAN
	_                   [2]byte
} /* winnt.h:3984:13 */

type SECURITY_QUALITY_OF_SERVICE = _SECURITY_QUALITY_OF_SERVICE /* winnt.h:3989:7 */
type PSECURITY_QUALITY_OF_SERVICE = uintptr                     /* winnt.h:3989:35 */

type _SE_IMPERSONATION_STATE = struct {
	Token         PACCESS_TOKEN
	CopyOnOpen    BOOLEAN
	EffectiveOnly BOOLEAN
	_             [2]byte
	Level         SECURITY_IMPERSONATION_LEVEL
} /* winnt.h:3991:13 */

type SE_IMPERSONATION_STATE = _SE_IMPERSONATION_STATE /* winnt.h:3996:7 */
type PSE_IMPERSONATION_STATE = uintptr                /* winnt.h:3996:30 */

type SECURITY_INFORMATION = DWORD    /* winnt.h:4003:19 */
type PSECURITY_INFORMATION = uintptr /* winnt.h:4003:40 */

type SE_LEARNING_MODE_DATA_TYPE = uint32 /* winnt.h:4023:7 */

type _SECURITY_CAPABILITIES = struct {
	AppContainerSid PSID
	Capabilities    PSID_AND_ATTRIBUTES
	CapabilityCount DWORD
	Reserved        DWORD
} /* winnt.h:4027:13 */

type SECURITY_CAPABILITIES = _SECURITY_CAPABILITIES /* winnt.h:4032:7 */
type PSECURITY_CAPABILITIES = uintptr               /* winnt.h:4032:29 */
type LPSECURITY_CAPABILITIES = uintptr              /* winnt.h:4032:53 */

type _JOB_SET_ARRAY = struct {
	JobHandle   HANDLE
	MemberLevel DWORD
	Flags       DWORD
} /* winnt.h:4087:13 */

type JOB_SET_ARRAY = _JOB_SET_ARRAY /* winnt.h:4091:7 */
type PJOB_SET_ARRAY = uintptr       /* winnt.h:4091:21 */

type _EXCEPTION_REGISTRATION_RECORD = struct {
	__0 struct{ Next uintptr }
	__4 struct{ Handler PEXCEPTION_ROUTINE }
} /* winnt.h:4097:13 */

type EXCEPTION_REGISTRATION_RECORD = _EXCEPTION_REGISTRATION_RECORD /* winnt.h:4106:7 */

type PEXCEPTION_REGISTRATION_RECORD = uintptr /* winnt.h:4108:43 */

type EXCEPTION_REGISTRATION = EXCEPTION_REGISTRATION_RECORD   /* winnt.h:4110:43 */
type PEXCEPTION_REGISTRATION = PEXCEPTION_REGISTRATION_RECORD /* winnt.h:4111:44 */

type _NT_TIB = struct {
	ExceptionList        uintptr
	StackBase            PVOID
	StackLimit           PVOID
	SubSystemTib         PVOID
	__16                 struct{ FiberData PVOID }
	ArbitraryUserPointer PVOID
	Self                 uintptr
} /* winnt.h:4116:28 */

type NT_TIB = _NT_TIB  /* winnt.h:4127:7 */
type PNT_TIB = uintptr /* winnt.h:4128:20 */

type _NT_TIB32 = struct {
	ExceptionList        DWORD
	StackBase            DWORD
	StackLimit           DWORD
	SubSystemTib         DWORD
	__16                 struct{ FiberData DWORD }
	ArbitraryUserPointer DWORD
	Self                 DWORD
} /* winnt.h:4131:28 */

type NT_TIB32 = _NT_TIB32 /* winnt.h:4142:7 */
type PNT_TIB32 = uintptr  /* winnt.h:4142:16 */

type _NT_TIB64 = struct {
	ExceptionList        DWORD64
	StackBase            DWORD64
	StackLimit           DWORD64
	SubSystemTib         DWORD64
	__32                 struct{ FiberData DWORD64 }
	ArbitraryUserPointer DWORD64
	Self                 DWORD64
} /* winnt.h:4144:28 */

type NT_TIB64 = _NT_TIB64 /* winnt.h:4155:7 */
type PNT_TIB64 = uintptr  /* winnt.h:4155:16 */

type _UMS_CREATE_THREAD_ATTRIBUTES = struct {
	UmsVersion        DWORD
	UmsContext        PVOID
	UmsCompletionList PVOID
} /* winnt.h:4166:13 */

type UMS_CREATE_THREAD_ATTRIBUTES = _UMS_CREATE_THREAD_ATTRIBUTES /* winnt.h:4170:7 */
type PUMS_CREATE_THREAD_ATTRIBUTES = uintptr                      /* winnt.h:4170:36 */

type _QUOTA_LIMITS = struct {
	PagedPoolLimit        SIZE_T
	NonPagedPoolLimit     SIZE_T
	MinimumWorkingSetSize SIZE_T
	MaximumWorkingSetSize SIZE_T
	PagefileLimit         SIZE_T
	_                     [4]byte
	TimeLimit             LARGE_INTEGER
} /* winnt.h:4172:13 */

type QUOTA_LIMITS = _QUOTA_LIMITS /* winnt.h:4179:7 */
type PQUOTA_LIMITS = uintptr      /* winnt.h:4179:20 */

type _RATE_QUOTA_LIMIT = struct{ RateData DWORD } /* winnt.h:4187:13 */

type RATE_QUOTA_LIMIT = _RATE_QUOTA_LIMIT /* winnt.h:4193:7 */
type PRATE_QUOTA_LIMIT = uintptr          /* winnt.h:4193:25 */

type _QUOTA_LIMITS_EX = struct {
	PagedPoolLimit        SIZE_T
	NonPagedPoolLimit     SIZE_T
	MinimumWorkingSetSize SIZE_T
	MaximumWorkingSetSize SIZE_T
	PagefileLimit         SIZE_T
	_                     [4]byte
	TimeLimit             LARGE_INTEGER
	WorkingSetLimit       SIZE_T
	Reserved2             SIZE_T
	Reserved3             SIZE_T
	Reserved4             SIZE_T
	Flags                 DWORD
	CpuRateLimit          RATE_QUOTA_LIMIT
} /* winnt.h:4195:13 */

type QUOTA_LIMITS_EX = _QUOTA_LIMITS_EX /* winnt.h:4208:7 */
type PQUOTA_LIMITS_EX = uintptr         /* winnt.h:4208:23 */

type _IO_COUNTERS = struct {
	ReadOperationCount  ULONGLONG
	WriteOperationCount ULONGLONG
	OtherOperationCount ULONGLONG
	ReadTransferCount   ULONGLONG
	WriteTransferCount  ULONGLONG
	OtherTransferCount  ULONGLONG
} /* winnt.h:4210:13 */

type IO_COUNTERS = _IO_COUNTERS /* winnt.h:4217:7 */
type PIO_COUNTERS = uintptr     /* winnt.h:4218:25 */

type HARDWARE_COUNTER_TYPE = uint32   /* winnt.h:4226:7 */
type PHARDWARE_COUNTER_TYPE = uintptr /* winnt.h:4226:30 */

type PROCESS_MITIGATION_POLICY = uint32   /* winnt.h:4241:7 */
type PPROCESS_MITIGATION_POLICY = uintptr /* winnt.h:4241:33 */

type _PROCESS_MITIGATION_ASLR_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4243:13 */

type PROCESS_MITIGATION_ASLR_POLICY = _PROCESS_MITIGATION_ASLR_POLICY /* winnt.h:4254:7 */
type PPROCESS_MITIGATION_ASLR_POLICY = uintptr                        /* winnt.h:4254:38 */

type _PROCESS_MITIGATION_DEP_POLICY = struct {
	__0       struct{ Flags DWORD }
	Permanent BOOLEAN
	_         [3]byte
} /* winnt.h:4256:13 */

type PROCESS_MITIGATION_DEP_POLICY = _PROCESS_MITIGATION_DEP_POLICY /* winnt.h:4266:7 */
type PPROCESS_MITIGATION_DEP_POLICY = uintptr                       /* winnt.h:4266:37 */

type _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4268:13 */

type PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY = _PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY /* winnt.h:4277:7 */
type PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY = uintptr                                       /* winnt.h:4277:53 */

type _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4279:13 */

type PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY = _PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY /* winnt.h:4287:7 */
type PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY = uintptr                                       /* winnt.h:4287:53 */

type _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4289:13 */

type PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY = _PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY /* winnt.h:4297:7 */
type PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY = uintptr                                           /* winnt.h:4297:57 */

type _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4299:13 */

type PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY = _PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY /* winnt.h:4309:7 */
type PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY = uintptr                                      /* winnt.h:4309:53 */

type _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4311:13 */

type PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY = _PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY /* winnt.h:4321:7 */
type PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY = uintptr                                    /* winnt.h:4321:51 */

type _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY = struct {
	__0 struct {
		Flags DWORD
		_     [4]byte
	}
} /* winnt.h:4323:13 */

type PROCESS_MITIGATION_DYNAMIC_CODE_POLICY = _PROCESS_MITIGATION_DYNAMIC_CODE_POLICY /* winnt.h:4333:7 */
type PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY = uintptr                                /* winnt.h:4333:47 */

type _PROCESS_MITIGATION_FONT_DISABLE_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4335:13 */

type PROCESS_MITIGATION_FONT_DISABLE_POLICY = _PROCESS_MITIGATION_FONT_DISABLE_POLICY /* winnt.h:4344:7 */
type PPROCESS_MITIGATION_FONT_DISABLE_POLICY = uintptr                                /* winnt.h:4344:47 */

type _PROCESS_MITIGATION_IMAGE_LOAD_POLICY = struct{ __0 struct{ Flags DWORD } } /* winnt.h:4346:13 */

type PROCESS_MITIGATION_IMAGE_LOAD_POLICY = _PROCESS_MITIGATION_IMAGE_LOAD_POLICY /* winnt.h:4356:7 */
type PPROCESS_MITIGATION_IMAGE_LOAD_POLICY = uintptr                              /* winnt.h:4356:45 */

type _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = struct {
	TotalUserTime             LARGE_INTEGER
	TotalKernelTime           LARGE_INTEGER
	ThisPeriodTotalUserTime   LARGE_INTEGER
	ThisPeriodTotalKernelTime LARGE_INTEGER
	TotalPageFaultCount       DWORD
	TotalProcesses            DWORD
	ActiveProcesses           DWORD
	TotalTerminatedProcesses  DWORD
} /* winnt.h:4358:13 */

type JOBOBJECT_BASIC_ACCOUNTING_INFORMATION = _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION /* winnt.h:4367:7 */
type PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION = uintptr                                /* winnt.h:4367:46 */

type _JOBOBJECT_BASIC_LIMIT_INFORMATION = struct {
	PerProcessUserTimeLimit LARGE_INTEGER
	PerJobUserTimeLimit     LARGE_INTEGER
	LimitFlags              DWORD
	MinimumWorkingSetSize   SIZE_T
	MaximumWorkingSetSize   SIZE_T
	ActiveProcessLimit      DWORD
	Affinity                ULONG_PTR
	PriorityClass           DWORD
	SchedulingClass         DWORD
	_                       [4]byte
} /* winnt.h:4369:13 */

type JOBOBJECT_BASIC_LIMIT_INFORMATION = _JOBOBJECT_BASIC_LIMIT_INFORMATION /* winnt.h:4379:7 */
type PJOBOBJECT_BASIC_LIMIT_INFORMATION = uintptr                           /* winnt.h:4379:41 */

type _JOBOBJECT_EXTENDED_LIMIT_INFORMATION = struct {
	BasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION
	IoInfo                IO_COUNTERS
	ProcessMemoryLimit    SIZE_T
	JobMemoryLimit        SIZE_T
	PeakProcessMemoryUsed SIZE_T
	PeakJobMemoryUsed     SIZE_T
} /* winnt.h:4381:13 */

type JOBOBJECT_EXTENDED_LIMIT_INFORMATION = _JOBOBJECT_EXTENDED_LIMIT_INFORMATION /* winnt.h:4388:7 */
type PJOBOBJECT_EXTENDED_LIMIT_INFORMATION = uintptr                              /* winnt.h:4388:44 */

type _JOBOBJECT_BASIC_PROCESS_ID_LIST = struct {
	NumberOfAssignedProcesses DWORD
	NumberOfProcessIdsInList  DWORD
	ProcessIdList             [1]ULONG_PTR
} /* winnt.h:4390:13 */

type JOBOBJECT_BASIC_PROCESS_ID_LIST = _JOBOBJECT_BASIC_PROCESS_ID_LIST /* winnt.h:4394:7 */
type PJOBOBJECT_BASIC_PROCESS_ID_LIST = uintptr                         /* winnt.h:4394:39 */

type _JOBOBJECT_BASIC_UI_RESTRICTIONS = struct{ UIRestrictionsClass DWORD } /* winnt.h:4396:13 */

type JOBOBJECT_BASIC_UI_RESTRICTIONS = _JOBOBJECT_BASIC_UI_RESTRICTIONS /* winnt.h:4398:7 */
type PJOBOBJECT_BASIC_UI_RESTRICTIONS = uintptr                         /* winnt.h:4398:39 */

type _JOBOBJECT_SECURITY_LIMIT_INFORMATION = struct {
	SecurityLimitFlags DWORD
	JobToken           HANDLE
	SidsToDisable      PTOKEN_GROUPS
	PrivilegesToDelete PTOKEN_PRIVILEGES
	RestrictedSids     PTOKEN_GROUPS
} /* winnt.h:4400:13 */

type JOBOBJECT_SECURITY_LIMIT_INFORMATION = _JOBOBJECT_SECURITY_LIMIT_INFORMATION /* winnt.h:4406:7 */
type PJOBOBJECT_SECURITY_LIMIT_INFORMATION = uintptr                              /* winnt.h:4406:44 */

type _JOBOBJECT_END_OF_JOB_TIME_INFORMATION = struct{ EndOfJobTimeAction DWORD } /* winnt.h:4408:13 */

type JOBOBJECT_END_OF_JOB_TIME_INFORMATION = _JOBOBJECT_END_OF_JOB_TIME_INFORMATION /* winnt.h:4410:7 */
type PJOBOBJECT_END_OF_JOB_TIME_INFORMATION = uintptr                               /* winnt.h:4410:45 */

type _JOBOBJECT_ASSOCIATE_COMPLETION_PORT = struct {
	CompletionKey  PVOID
	CompletionPort HANDLE
} /* winnt.h:4412:13 */

type JOBOBJECT_ASSOCIATE_COMPLETION_PORT = _JOBOBJECT_ASSOCIATE_COMPLETION_PORT /* winnt.h:4415:7 */
type PJOBOBJECT_ASSOCIATE_COMPLETION_PORT = uintptr                             /* winnt.h:4415:43 */

type _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = struct {
	BasicInfo JOBOBJECT_BASIC_ACCOUNTING_INFORMATION
	IoInfo    IO_COUNTERS
} /* winnt.h:4417:13 */

type JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION /* winnt.h:4420:7 */
type PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION = uintptr                                       /* winnt.h:4420:53 */

type _JOBOBJECT_JOBSET_INFORMATION = struct{ MemberLevel DWORD } /* winnt.h:4422:13 */

type JOBOBJECT_JOBSET_INFORMATION = _JOBOBJECT_JOBSET_INFORMATION /* winnt.h:4424:7 */
type PJOBOBJECT_JOBSET_INFORMATION = uintptr                      /* winnt.h:4424:36 */

type JOBOBJECT_RATE_CONTROL_TOLERANCE = uint32 /* winnt.h:4430:7 */

type JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL = uint32 /* winnt.h:4436:7 */

type _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION = struct {
	IoReadBytesLimit             DWORD64
	IoWriteBytesLimit            DWORD64
	PerJobUserTimeLimit          LARGE_INTEGER
	JobMemoryLimit               DWORD64
	RateControlTolerance         JOBOBJECT_RATE_CONTROL_TOLERANCE
	RateControlToleranceInterval JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL
	LimitFlags                   DWORD
	_                            [4]byte
} /* winnt.h:4438:13 */

type JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION = _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION /* winnt.h:4446:7 */
type PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION = uintptr                                  /* winnt.h:4446:48 */

type _JOBOBJECT_LIMIT_VIOLATION_INFORMATION = struct {
	LimitFlags                DWORD
	ViolationLimitFlags       DWORD
	IoReadBytes               DWORD64
	IoReadBytesLimit          DWORD64
	IoWriteBytes              DWORD64
	IoWriteBytesLimit         DWORD64
	PerJobUserTime            LARGE_INTEGER
	PerJobUserTimeLimit       LARGE_INTEGER
	JobMemory                 DWORD64
	JobMemoryLimit            DWORD64
	RateControlTolerance      JOBOBJECT_RATE_CONTROL_TOLERANCE
	RateControlToleranceLimit JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL
} /* winnt.h:4448:13 */

type JOBOBJECT_LIMIT_VIOLATION_INFORMATION = _JOBOBJECT_LIMIT_VIOLATION_INFORMATION /* winnt.h:4461:7 */
type PJOBOBJECT_LIMIT_VIOLATION_INFORMATION = uintptr                               /* winnt.h:4461:45 */

type _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION = struct {
	ControlFlags DWORD
	__4          struct{ CpuRate DWORD }
} /* winnt.h:4463:13 */

type JOBOBJECT_CPU_RATE_CONTROL_INFORMATION = _JOBOBJECT_CPU_RATE_CONTROL_INFORMATION /* winnt.h:4469:7 */
type PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION = uintptr                                /* winnt.h:4469:46 */

type JOBOBJECTINFOCLASS = uint32 /* winnt.h:4573:7 */

type FIRMWARE_TYPE = uint32   /* winnt.h:4580:7 */
type PFIRMWARE_TYPE = uintptr /* winnt.h:4580:21 */

type LOGICAL_PROCESSOR_RELATIONSHIP = uint32 /* winnt.h:4603:7 */

type PROCESSOR_CACHE_TYPE = uint32 /* winnt.h:4609:7 */

type _CACHE_DESCRIPTOR = struct {
	Level         BYTE
	Associativity BYTE
	LineSize      WORD
	Size          DWORD
	Type          PROCESSOR_CACHE_TYPE
} /* winnt.h:4613:13 */

type CACHE_DESCRIPTOR = _CACHE_DESCRIPTOR /* winnt.h:4619:7 */
type PCACHE_DESCRIPTOR = uintptr          /* winnt.h:4619:24 */

type _SYSTEM_LOGICAL_PROCESSOR_INFORMATION = struct {
	ProcessorMask ULONG_PTR
	Relationship  LOGICAL_PROCESSOR_RELATIONSHIP
	__8           struct {
		_             [0]uint64
		ProcessorCore struct{ Flags BYTE }
		_             [15]byte
	}
} /* winnt.h:4621:13 */

type SYSTEM_LOGICAL_PROCESSOR_INFORMATION = _SYSTEM_LOGICAL_PROCESSOR_INFORMATION /* winnt.h:4634:7 */
type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION = uintptr                              /* winnt.h:4634:44 */

type _PROCESSOR_RELATIONSHIP = struct {
	Flags      BYTE
	Reserved   [21]BYTE
	GroupCount WORD
	GroupMask  [1]GROUP_AFFINITY
} /* winnt.h:4636:13 */

type PROCESSOR_RELATIONSHIP = _PROCESSOR_RELATIONSHIP /* winnt.h:4641:7 */
type PPROCESSOR_RELATIONSHIP = uintptr                /* winnt.h:4641:30 */

type _NUMA_NODE_RELATIONSHIP = struct {
	NodeNumber DWORD
	Reserved   [20]BYTE
	GroupMask  GROUP_AFFINITY
} /* winnt.h:4643:13 */

type NUMA_NODE_RELATIONSHIP = _NUMA_NODE_RELATIONSHIP /* winnt.h:4647:7 */
type PNUMA_NODE_RELATIONSHIP = uintptr                /* winnt.h:4647:30 */

type _CACHE_RELATIONSHIP = struct {
	Level         BYTE
	Associativity BYTE
	LineSize      WORD
	CacheSize     DWORD
	Type          PROCESSOR_CACHE_TYPE
	Reserved      [20]BYTE
	GroupMask     GROUP_AFFINITY
} /* winnt.h:4649:13 */

type CACHE_RELATIONSHIP = _CACHE_RELATIONSHIP /* winnt.h:4657:7 */
type PCACHE_RELATIONSHIP = uintptr            /* winnt.h:4657:26 */

type _PROCESSOR_GROUP_INFO = struct {
	MaximumProcessorCount BYTE
	ActiveProcessorCount  BYTE
	Reserved              [38]BYTE
	ActiveProcessorMask   KAFFINITY
} /* winnt.h:4659:13 */

type PROCESSOR_GROUP_INFO = _PROCESSOR_GROUP_INFO /* winnt.h:4664:7 */
type PPROCESSOR_GROUP_INFO = uintptr              /* winnt.h:4664:28 */

type _GROUP_RELATIONSHIP = struct {
	MaximumGroupCount WORD
	ActiveGroupCount  WORD
	Reserved          [20]BYTE
	GroupInfo         [1]PROCESSOR_GROUP_INFO
} /* winnt.h:4666:13 */

type GROUP_RELATIONSHIP = _GROUP_RELATIONSHIP /* winnt.h:4671:7 */
type PGROUP_RELATIONSHIP = uintptr            /* winnt.h:4671:26 */

type _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX = struct {
	Relationship LOGICAL_PROCESSOR_RELATIONSHIP
	Size         DWORD
	__8          struct {
		Processor PROCESSOR_RELATIONSHIP
		_         [32]byte
	}
} /* winnt.h:4673:5 */

type SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX = _SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX /* winnt.h:4684:61 */
type PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX = uintptr                                 /* winnt.h:4684:101 */

type _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = struct{ CycleTime DWORD64 } /* winnt.h:4686:13 */

type SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = _SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION /* winnt.h:4688:7 */
type PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION = uintptr                                 /* winnt.h:4688:47 */

type _XSTATE_FEATURE = struct {
	Offset DWORD
	Size   DWORD
} /* winnt.h:4771:13 */

type XSTATE_FEATURE = _XSTATE_FEATURE /* winnt.h:4774:7 */
type PXSTATE_FEATURE = uintptr        /* winnt.h:4774:22 */

type _XSTATE_CONFIGURATION = struct {
	EnabledFeatures         DWORD64
	EnabledVolatileFeatures DWORD64
	Size                    DWORD
	OptimizedSave           uint8 /* DWORD OptimizedSave: 1 */
	_                       [3]byte
	Features                [64]XSTATE_FEATURE
} /* winnt.h:4776:13 */

type XSTATE_CONFIGURATION = _XSTATE_CONFIGURATION /* winnt.h:4782:7 */
type PXSTATE_CONFIGURATION = uintptr              /* winnt.h:4782:28 */

type _MEMORY_BASIC_INFORMATION = struct {
	BaseAddress       PVOID
	AllocationBase    PVOID
	AllocationProtect DWORD
	RegionSize        SIZE_T
	State             DWORD
	Protect           DWORD
	Type              DWORD
} /* winnt.h:4784:13 */

type MEMORY_BASIC_INFORMATION = _MEMORY_BASIC_INFORMATION /* winnt.h:4792:7 */
type PMEMORY_BASIC_INFORMATION = uintptr                  /* winnt.h:4792:32 */

type _MEMORY_BASIC_INFORMATION32 = struct {
	BaseAddress       DWORD
	AllocationBase    DWORD
	AllocationProtect DWORD
	RegionSize        DWORD
	State             DWORD
	Protect           DWORD
	Type              DWORD
} /* winnt.h:4794:13 */

type MEMORY_BASIC_INFORMATION32 = _MEMORY_BASIC_INFORMATION32 /* winnt.h:4802:7 */
type PMEMORY_BASIC_INFORMATION32 = uintptr                    /* winnt.h:4802:34 */

type _MEMORY_BASIC_INFORMATION64 = struct {
	BaseAddress       ULONGLONG
	AllocationBase    ULONGLONG
	AllocationProtect DWORD
	__alignment1      DWORD
	RegionSize        ULONGLONG
	State             DWORD
	Protect           DWORD
	Type              DWORD
	__alignment2      DWORD
} /* winnt.h:4804:13 */

type MEMORY_BASIC_INFORMATION64 = _MEMORY_BASIC_INFORMATION64 /* winnt.h:4814:7 */
type PMEMORY_BASIC_INFORMATION64 = uintptr                    /* winnt.h:4814:34 */

type FILE_ID_1281 = struct {
	LowPart  ULONGLONG
	HighPart ULONGLONG
} /* winnt.h:4981:13 */

type FILE_ID_128 = FILE_ID_1281 /* winnt.h:4984:7 */
type PFILE_ID_128 = uintptr     /* winnt.h:4984:20 */

type _FILE_NOTIFY_INFORMATION = struct {
	NextEntryOffset DWORD
	Action          DWORD
	FileNameLength  DWORD
	FileName        [1]WCHAR
	_               [2]byte
} /* winnt.h:4986:13 */

type FILE_NOTIFY_INFORMATION = _FILE_NOTIFY_INFORMATION /* winnt.h:4991:7 */
type PFILE_NOTIFY_INFORMATION = uintptr                 /* winnt.h:4991:31 */

type _FILE_SEGMENT_ELEMENT = struct {
	_      [0]uint64
	Buffer PVOID64
	_      [4]byte
} /* winnt.h:4993:13 */

type FILE_SEGMENT_ELEMENT = _FILE_SEGMENT_ELEMENT /* winnt.h:4996:7 */
type PFILE_SEGMENT_ELEMENT = uintptr              /* winnt.h:4996:28 */

type _REPARSE_GUID_DATA_BUFFER = struct {
	ReparseTag           DWORD
	ReparseDataLength    WORD
	Reserved             WORD
	ReparseGuid          GUID
	GenericReparseBuffer struct{ DataBuffer [1]BYTE }
	_                    [3]byte
} /* winnt.h:4998:13 */

type REPARSE_GUID_DATA_BUFFER = _REPARSE_GUID_DATA_BUFFER /* winnt.h:5006:7 */
type PREPARSE_GUID_DATA_BUFFER = uintptr                  /* winnt.h:5006:32 */

type SYSTEM_POWER_STATE = uint32   /* winnt.h:5231:5 */
type PSYSTEM_POWER_STATE = uintptr /* winnt.h:5231:24 */

type POWER_ACTION = uint32   /* winnt.h:5239:5 */
type PPOWER_ACTION = uintptr /* winnt.h:5239:18 */

type DEVICE_POWER_STATE = uint32   /* winnt.h:5244:5 */
type PDEVICE_POWER_STATE = uintptr /* winnt.h:5244:24 */

type MONITOR_DISPLAY_STATE = uint32   /* winnt.h:5248:5 */
type PMONITOR_DISPLAY_STATE = uintptr /* winnt.h:5248:28 */

type USER_ACTIVITY_PRESENCE = uint32   /* winnt.h:5256:5 */
type PUSER_ACTIVITY_PRESENCE = uintptr /* winnt.h:5256:28 */

type EXECUTION_STATE = DWORD    /* winnt.h:5264:17 */
type PEXECUTION_STATE = uintptr /* winnt.h:5264:34 */

type LATENCY_TIME = uint32 /* winnt.h:5268:5 */

type POWER_REQUEST_TYPE = uint32   /* winnt.h:5286:5 */
type PPOWER_REQUEST_TYPE = uintptr /* winnt.h:5286:24 */

type CM_Power_Data_s = struct {
	PD_Size                 DWORD
	PD_MostRecentPowerState DEVICE_POWER_STATE
	PD_Capabilities         DWORD
	PD_D1Latency            DWORD
	PD_D2Latency            DWORD
	PD_D3Latency            DWORD
	PD_PowerStateMapping    [7]DEVICE_POWER_STATE
	PD_DeepestSystemWake    SYSTEM_POWER_STATE
} /* winnt.h:5298:13 */

type CM_POWER_DATA = CM_Power_Data_s /* winnt.h:5307:7 */
type PCM_POWER_DATA = uintptr        /* winnt.h:5307:21 */

type POWER_INFORMATION_LEVEL = uint32 /* winnt.h:5391:7 */

type POWER_USER_PRESENCE_TYPE = uint32   /* winnt.h:5397:7 */
type PPOWER_USER_PRESENCE_TYPE = uintptr /* winnt.h:5397:32 */

type _POWER_USER_PRESENCE = struct{ UserPresence POWER_USER_PRESENCE_TYPE } /* winnt.h:5399:13 */

type POWER_USER_PRESENCE = _POWER_USER_PRESENCE /* winnt.h:5401:7 */
type PPOWER_USER_PRESENCE = uintptr             /* winnt.h:5401:27 */

type _POWER_SESSION_CONNECT = struct {
	Connected BOOLEAN
	Console   BOOLEAN
} /* winnt.h:5403:13 */

type POWER_SESSION_CONNECT = _POWER_SESSION_CONNECT /* winnt.h:5406:7 */
type PPOWER_SESSION_CONNECT = uintptr               /* winnt.h:5406:29 */

type _POWER_SESSION_TIMEOUTS = struct {
	InputTimeout   DWORD
	DisplayTimeout DWORD
} /* winnt.h:5408:13 */

type POWER_SESSION_TIMEOUTS = _POWER_SESSION_TIMEOUTS /* winnt.h:5411:7 */
type PPOWER_SESSION_TIMEOUTS = uintptr                /* winnt.h:5411:30 */

type _POWER_SESSION_RIT_STATE = struct {
	Active        BOOLEAN
	_             [3]byte
	LastInputTime DWORD
} /* winnt.h:5413:13 */

type POWER_SESSION_RIT_STATE = _POWER_SESSION_RIT_STATE /* winnt.h:5416:7 */
type PPOWER_SESSION_RIT_STATE = uintptr                 /* winnt.h:5416:31 */

type _POWER_SESSION_WINLOGON = struct {
	SessionId DWORD
	Console   BOOLEAN
	Locked    BOOLEAN
	_         [2]byte
} /* winnt.h:5418:13 */

type POWER_SESSION_WINLOGON = _POWER_SESSION_WINLOGON /* winnt.h:5422:7 */
type PPOWER_SESSION_WINLOGON = uintptr                /* winnt.h:5422:30 */

type _POWER_IDLE_RESILIENCY = struct {
	CoalescingTimeout    DWORD
	IdleResiliencyPeriod DWORD
} /* winnt.h:5424:13 */

type POWER_IDLE_RESILIENCY = _POWER_IDLE_RESILIENCY /* winnt.h:5427:7 */
type PPOWER_IDLE_RESILIENCY = uintptr               /* winnt.h:5427:29 */

type POWER_MONITOR_REQUEST_REASON = uint32 /* winnt.h:5445:7 */

type _POWER_MONITOR_INVOCATION = struct {
	On            BOOLEAN
	Console       BOOLEAN
	_             [2]byte
	RequestReason POWER_MONITOR_REQUEST_REASON
} /* winnt.h:5447:13 */

type POWER_MONITOR_INVOCATION = _POWER_MONITOR_INVOCATION /* winnt.h:5451:7 */
type PPOWER_MONITOR_INVOCATION = uintptr                  /* winnt.h:5451:32 */

type _RESUME_PERFORMANCE = struct {
	PostTimeMs              DWORD
	_                       [4]byte
	TotalResumeTimeMs       ULONGLONG
	ResumeCompleteTimestamp ULONGLONG
} /* winnt.h:5453:13 */

type RESUME_PERFORMANCE = _RESUME_PERFORMANCE /* winnt.h:5457:7 */
type PRESUME_PERFORMANCE = uintptr            /* winnt.h:5457:26 */

type SYSTEM_POWER_CONDITION = uint32 /* winnt.h:5464:7 */

type SET_POWER_SETTING_VALUE = struct {
	Version        DWORD
	Guid           GUID
	PowerCondition SYSTEM_POWER_CONDITION
	DataLength     DWORD
	Data           [1]BYTE
	_              [3]byte
}                                       /* winnt.h:5472:7 */
type PSET_POWER_SETTING_VALUE = uintptr /* winnt.h:5472:31 */

type NOTIFY_USER_POWER_SETTING = struct{ Guid GUID } /* winnt.h:5478:7 */
type PNOTIFY_USER_POWER_SETTING = uintptr            /* winnt.h:5478:33 */

type _APPLICATIONLAUNCH_SETTING_VALUE = struct {
	ActivationTime   LARGE_INTEGER
	Flags            DWORD
	ButtonInstanceID DWORD
} /* winnt.h:5480:13 */

type APPLICATIONLAUNCH_SETTING_VALUE = _APPLICATIONLAUNCH_SETTING_VALUE /* winnt.h:5484:7 */
type PAPPLICATIONLAUNCH_SETTING_VALUE = uintptr                         /* winnt.h:5484:39 */

type POWER_PLATFORM_ROLE = uint32   /* winnt.h:5497:7 */
type PPOWER_PLATFORM_ROLE = uintptr /* winnt.h:5497:27 */

type _POWER_PLATFORM_INFORMATION = struct{ AoAc BOOLEAN } /* winnt.h:5499:13 */

type POWER_PLATFORM_INFORMATION = _POWER_PLATFORM_INFORMATION /* winnt.h:5501:7 */
type PPOWER_PLATFORM_INFORMATION = uintptr                    /* winnt.h:5501:34 */

type BATTERY_REPORTING_SCALE = struct {
	Granularity DWORD
	Capacity    DWORD
}                                       /* winnt.h:5520:7 */
type PBATTERY_REPORTING_SCALE = uintptr /* winnt.h:5520:31 */

type PPM_WMI_LEGACY_PERFSTATE = struct {
	Frequency        DWORD
	Flags            DWORD
	PercentFrequency DWORD
}                                        /* winnt.h:5526:7 */
type PPPM_WMI_LEGACY_PERFSTATE = uintptr /* winnt.h:5526:32 */

type PPM_WMI_IDLE_STATE = struct {
	Latency        DWORD
	Power          DWORD
	TimeCheck      DWORD
	PromotePercent BYTE
	DemotePercent  BYTE
	StateType      BYTE
	Reserved       BYTE
	StateFlags     DWORD
	Context        DWORD
	IdleHandler    DWORD
	Reserved1      DWORD
}                                  /* winnt.h:5540:7 */
type PPPM_WMI_IDLE_STATE = uintptr /* winnt.h:5540:26 */

type PPM_WMI_IDLE_STATES = struct {
	Type             DWORD
	Count            DWORD
	TargetState      DWORD
	OldState         DWORD
	TargetProcessors DWORD64
	State            [1]PPM_WMI_IDLE_STATE
}                                   /* winnt.h:5549:7 */
type PPPM_WMI_IDLE_STATES = uintptr /* winnt.h:5549:27 */

type PPM_WMI_IDLE_STATES_EX = struct {
	Type             DWORD
	Count            DWORD
	TargetState      DWORD
	OldState         DWORD
	TargetProcessors PVOID
	State            [1]PPM_WMI_IDLE_STATE
}                                      /* winnt.h:5558:7 */
type PPPM_WMI_IDLE_STATES_EX = uintptr /* winnt.h:5558:30 */

type PPM_WMI_PERF_STATE = struct {
	Frequency        DWORD
	Power            DWORD
	PercentFrequency BYTE
	IncreaseLevel    BYTE
	DecreaseLevel    BYTE
	Type             BYTE
	IncreaseTime     DWORD
	DecreaseTime     DWORD
	_                [4]byte
	Control          DWORD64
	Status           DWORD64
	HitCount         DWORD
	Reserved1        DWORD
	Reserved2        DWORD64
	Reserved3        DWORD64
}                                  /* winnt.h:5575:7 */
type PPPM_WMI_PERF_STATE = uintptr /* winnt.h:5575:26 */

type PPM_WMI_PERF_STATES = struct {
	Count             DWORD
	MaxFrequency      DWORD
	CurrentState      DWORD
	MaxPerfState      DWORD
	MinPerfState      DWORD
	LowestPerfState   DWORD
	ThermalConstraint DWORD
	BusyAdjThreshold  BYTE
	PolicyType        BYTE
	Type              BYTE
	Reserved          BYTE
	TimerInterval     DWORD
	_                 [4]byte
	TargetProcessors  DWORD64
	PStateHandler     DWORD
	PStateContext     DWORD
	TStateHandler     DWORD
	TStateContext     DWORD
	FeedbackHandler   DWORD
	Reserved1         DWORD
	Reserved2         DWORD64
	State             [1]PPM_WMI_PERF_STATE
}                                   /* winnt.h:5599:7 */
type PPPM_WMI_PERF_STATES = uintptr /* winnt.h:5599:27 */

type PPM_WMI_PERF_STATES_EX = struct {
	Count             DWORD
	MaxFrequency      DWORD
	CurrentState      DWORD
	MaxPerfState      DWORD
	MinPerfState      DWORD
	LowestPerfState   DWORD
	ThermalConstraint DWORD
	BusyAdjThreshold  BYTE
	PolicyType        BYTE
	Type              BYTE
	Reserved          BYTE
	TimerInterval     DWORD
	TargetProcessors  PVOID
	PStateHandler     DWORD
	PStateContext     DWORD
	TStateHandler     DWORD
	TStateContext     DWORD
	FeedbackHandler   DWORD
	Reserved1         DWORD
	Reserved2         DWORD64
	State             [1]PPM_WMI_PERF_STATE
}                                      /* winnt.h:5623:7 */
type PPPM_WMI_PERF_STATES_EX = uintptr /* winnt.h:5623:30 */

type PPM_IDLE_STATE_ACCOUNTING = struct {
	IdleTransitions    DWORD
	FailedTransitions  DWORD
	InvalidBucketIndex DWORD
	_                  [4]byte
	TotalTime          DWORD64
	IdleTimeBuckets    [6]DWORD
}                                         /* winnt.h:5634:7 */
type PPPM_IDLE_STATE_ACCOUNTING = uintptr /* winnt.h:5634:33 */

type PPM_IDLE_ACCOUNTING = struct {
	StateCount       DWORD
	TotalTransitions DWORD
	ResetCount       DWORD
	_                [4]byte
	StartTime        DWORD64
	State            [1]PPM_IDLE_STATE_ACCOUNTING
}                                   /* winnt.h:5642:7 */
type PPPM_IDLE_ACCOUNTING = uintptr /* winnt.h:5642:27 */

type PPM_IDLE_STATE_BUCKET_EX = struct {
	TotalTimeUs DWORD64
	MinTimeUs   DWORD
	MaxTimeUs   DWORD
	Count       DWORD
	_           [4]byte
}                                        /* winnt.h:5649:7 */
type PPPM_IDLE_STATE_BUCKET_EX = uintptr /* winnt.h:5649:32 */

type PPM_IDLE_STATE_ACCOUNTING_EX = struct {
	TotalTime            DWORD64
	IdleTransitions      DWORD
	FailedTransitions    DWORD
	InvalidBucketIndex   DWORD
	MinTimeUs            DWORD
	MaxTimeUs            DWORD
	CancelledTransitions DWORD
	IdleTimeBuckets      [16]PPM_IDLE_STATE_BUCKET_EX
}                                            /* winnt.h:5660:7 */
type PPPM_IDLE_STATE_ACCOUNTING_EX = uintptr /* winnt.h:5660:36 */

type PPM_IDLE_ACCOUNTING_EX = struct {
	StateCount       DWORD
	TotalTransitions DWORD
	ResetCount       DWORD
	AbortCount       DWORD
	StartTime        DWORD64
	State            [1]PPM_IDLE_STATE_ACCOUNTING_EX
}                                      /* winnt.h:5669:7 */
type PPPM_IDLE_ACCOUNTING_EX = uintptr /* winnt.h:5669:30 */

type PPM_PERFSTATE_EVENT = struct {
	State     DWORD
	Status    DWORD
	Latency   DWORD
	Speed     DWORD
	Processor DWORD
}                                   /* winnt.h:5713:7 */
type PPPM_PERFSTATE_EVENT = uintptr /* winnt.h:5713:27 */

type PPM_PERFSTATE_DOMAIN_EVENT = struct {
	State      DWORD
	Latency    DWORD
	Speed      DWORD
	_          [4]byte
	Processors DWORD64
}                                          /* winnt.h:5720:7 */
type PPPM_PERFSTATE_DOMAIN_EVENT = uintptr /* winnt.h:5720:34 */

type PPM_IDLESTATE_EVENT = struct {
	NewState   DWORD
	OldState   DWORD
	Processors DWORD64
}                                   /* winnt.h:5726:7 */
type PPPM_IDLESTATE_EVENT = uintptr /* winnt.h:5726:27 */

type PPM_THERMALCHANGE_EVENT = struct {
	ThermalConstraint DWORD
	_                 [4]byte
	Processors        DWORD64
}                                       /* winnt.h:5731:7 */
type PPPM_THERMALCHANGE_EVENT = uintptr /* winnt.h:5731:31 */
type PPM_THERMAL_POLICY_EVENT = struct {
	Mode       BYTE
	_          [7]byte
	Processors DWORD64
}                                        /* winnt.h:5735:7 */
type PPPM_THERMAL_POLICY_EVENT = uintptr /* winnt.h:5735:32 */

type POWER_ACTION_POLICY = struct {
	Action    POWER_ACTION
	Flags     DWORD
	EventCode DWORD
}                                   /* winnt.h:5752:7 */
type PPOWER_ACTION_POLICY = uintptr /* winnt.h:5752:27 */

type PROCESSOR_IDLESTATE_INFO = struct {
	TimeCheck      DWORD
	DemotePercent  BYTE
	PromotePercent BYTE
	Spare          [2]BYTE
}                                        /* winnt.h:5787:7 */
type PPROCESSOR_IDLESTATE_INFO = uintptr /* winnt.h:5787:32 */

type SYSTEM_POWER_LEVEL = struct {
	Enable         BOOLEAN
	Spare          [3]BYTE
	BatteryLevel   DWORD
	PowerPolicy    POWER_ACTION_POLICY
	MinSystemState SYSTEM_POWER_STATE
}                                  /* winnt.h:5795:7 */
type PSYSTEM_POWER_LEVEL = uintptr /* winnt.h:5795:26 */

type _SYSTEM_POWER_POLICY = struct {
	Revision                    DWORD
	PowerButton                 POWER_ACTION_POLICY
	SleepButton                 POWER_ACTION_POLICY
	LidClose                    POWER_ACTION_POLICY
	LidOpenWake                 SYSTEM_POWER_STATE
	Reserved                    DWORD
	Idle                        POWER_ACTION_POLICY
	IdleTimeout                 DWORD
	IdleSensitivity             BYTE
	DynamicThrottle             BYTE
	Spare2                      [2]BYTE
	MinSleep                    SYSTEM_POWER_STATE
	MaxSleep                    SYSTEM_POWER_STATE
	ReducedLatencySleep         SYSTEM_POWER_STATE
	WinLogonFlags               DWORD
	Spare3                      DWORD
	DozeS4Timeout               DWORD
	BroadcastCapacityResolution DWORD
	DischargePolicy             [4]SYSTEM_POWER_LEVEL
	VideoTimeout                DWORD
	VideoDimDisplay             BOOLEAN
	_                           [3]byte
	VideoReserved               [3]DWORD
	SpindownTimeout             DWORD
	OptimizeForPower            BOOLEAN
	FanThrottleTolerance        BYTE
	ForcedThrottle              BYTE
	MinThrottle                 BYTE
	OverThrottled               POWER_ACTION_POLICY
} /* winnt.h:5797:13 */

type SYSTEM_POWER_POLICY = _SYSTEM_POWER_POLICY /* winnt.h:5826:7 */
type PSYSTEM_POWER_POLICY = uintptr             /* winnt.h:5826:27 */

type PROCESSOR_IDLESTATE_POLICY = struct {
	Revision    WORD
	Flags       struct{ AsWORD WORD }
	PolicyCount DWORD
	Policy      [3]PROCESSOR_IDLESTATE_INFO
}                                          /* winnt.h:5846:7 */
type PPROCESSOR_IDLESTATE_POLICY = uintptr /* winnt.h:5846:34 */

type _PROCESSOR_POWER_POLICY_INFO = struct {
	TimeCheck      DWORD
	DemoteLimit    DWORD
	PromoteLimit   DWORD
	DemotePercent  BYTE
	PromotePercent BYTE
	Spare          [2]BYTE
	AllowDemotion  uint32 /* DWORD AllowDemotion: 1, DWORD AllowPromotion: 1, DWORD Reserved: 30 */
} /* winnt.h:5848:13 */

type PROCESSOR_POWER_POLICY_INFO = _PROCESSOR_POWER_POLICY_INFO /* winnt.h:5858:7 */
type PPROCESSOR_POWER_POLICY_INFO = uintptr                     /* winnt.h:5858:35 */

type _PROCESSOR_POWER_POLICY = struct {
	Revision        DWORD
	DynamicThrottle BYTE
	Spare           [3]BYTE
	DisableCStates  uint32 /* DWORD DisableCStates: 1, DWORD Reserved: 31 */
	PolicyCount     DWORD
	Policy          [3]PROCESSOR_POWER_POLICY_INFO
} /* winnt.h:5860:13 */

type PROCESSOR_POWER_POLICY = _PROCESSOR_POWER_POLICY /* winnt.h:5868:7 */
type PPROCESSOR_POWER_POLICY = uintptr                /* winnt.h:5868:30 */

type PROCESSOR_PERFSTATE_POLICY = struct {
	Revision         DWORD
	MaxThrottle      BYTE
	MinThrottle      BYTE
	BusyAdjThreshold BYTE
	__7              struct{ Spare BYTE }
	TimeCheck        DWORD
	IncreaseTime     DWORD
	DecreaseTime     DWORD
	IncreasePercent  DWORD
	DecreasePercent  DWORD
}                                          /* winnt.h:5892:7 */
type PPROCESSOR_PERFSTATE_POLICY = uintptr /* winnt.h:5892:34 */

type _ADMINISTRATOR_POWER_POLICY = struct {
	MinSleep           SYSTEM_POWER_STATE
	MaxSleep           SYSTEM_POWER_STATE
	MinVideoTimeout    DWORD
	MaxVideoTimeout    DWORD
	MinSpindownTimeout DWORD
	MaxSpindownTimeout DWORD
} /* winnt.h:5894:13 */

type ADMINISTRATOR_POWER_POLICY = _ADMINISTRATOR_POWER_POLICY /* winnt.h:5901:7 */
type PADMINISTRATOR_POWER_POLICY = uintptr                    /* winnt.h:5901:34 */

type SYSTEM_POWER_CAPABILITIES = struct {
	PowerButtonPresent     BOOLEAN
	SleepButtonPresent     BOOLEAN
	LidPresent             BOOLEAN
	SystemS1               BOOLEAN
	SystemS2               BOOLEAN
	SystemS3               BOOLEAN
	SystemS4               BOOLEAN
	SystemS5               BOOLEAN
	HiberFilePresent       BOOLEAN
	FullWake               BOOLEAN
	VideoDimPresent        BOOLEAN
	ApmPresent             BOOLEAN
	UpsPresent             BOOLEAN
	ThermalControl         BOOLEAN
	ProcessorThrottle      BOOLEAN
	ProcessorMinThrottle   BYTE
	ProcessorMaxThrottle   BYTE
	FastSystemS4           BOOLEAN
	spare2                 [3]BYTE
	DiskSpinDown           BOOLEAN
	spare3                 [8]BYTE
	SystemBatteriesPresent BOOLEAN
	BatteriesAreShortTerm  BOOLEAN
	BatteryScale           [3]BATTERY_REPORTING_SCALE
	AcOnLineWake           SYSTEM_POWER_STATE
	SoftLidWake            SYSTEM_POWER_STATE
	RtcWake                SYSTEM_POWER_STATE
	MinDeviceWakeState     SYSTEM_POWER_STATE
	DefaultLowLatencyWake  SYSTEM_POWER_STATE
}                                         /* winnt.h:5933:7 */
type PSYSTEM_POWER_CAPABILITIES = uintptr /* winnt.h:5933:33 */

type SYSTEM_BATTERY_STATE = struct {
	AcOnLine          BOOLEAN
	BatteryPresent    BOOLEAN
	Charging          BOOLEAN
	Discharging       BOOLEAN
	Spare1            [4]BOOLEAN
	MaxCapacity       DWORD
	RemainingCapacity DWORD
	Rate              DWORD
	EstimatedTime     DWORD
	DefaultAlert1     DWORD
	DefaultAlert2     DWORD
}                                    /* winnt.h:5947:7 */
type PSYSTEM_BATTERY_STATE = uintptr /* winnt.h:5947:28 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_DOS_HEADER = struct {
	e_magic    WORD
	e_cblp     WORD
	e_cp       WORD
	e_crlc     WORD
	e_cparhdr  WORD
	e_minalloc WORD
	e_maxalloc WORD
	e_ss       WORD
	e_sp       WORD
	e_csum     WORD
	e_ip       WORD
	e_cs       WORD
	e_lfarlc   WORD
	e_ovno     WORD
	e_res      [4]WORD
	e_oemid    WORD
	e_oeminfo  WORD
	e_res2     [10]WORD
	e_lfanew   LONG
} /* winnt.h:5959:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_DOS_HEADER = _IMAGE_DOS_HEADER /* winnt.h:5979:7 */
type PIMAGE_DOS_HEADER = uintptr          /* winnt.h:5979:24 */

type _IMAGE_OS2_HEADER = struct {
	ne_magic        WORD
	ne_ver          CHAR
	ne_rev          CHAR
	ne_enttab       WORD
	ne_cbenttab     WORD
	ne_crc          LONG
	ne_flags        WORD
	ne_autodata     WORD
	ne_heap         WORD
	ne_stack        WORD
	ne_csip         LONG
	ne_sssp         LONG
	ne_cseg         WORD
	ne_cmod         WORD
	ne_cbnrestab    WORD
	ne_segtab       WORD
	ne_rsrctab      WORD
	ne_restab       WORD
	ne_modtab       WORD
	ne_imptab       WORD
	ne_nrestab      LONG
	ne_cmovent      WORD
	ne_align        WORD
	ne_cres         WORD
	ne_exetyp       BYTE
	ne_flagsothers  BYTE
	ne_pretthunks   WORD
	ne_psegrefbytes WORD
	ne_swaparea     WORD
	ne_expver       WORD
} /* winnt.h:5981:13 */

type IMAGE_OS2_HEADER = _IMAGE_OS2_HEADER /* winnt.h:6012:7 */
type PIMAGE_OS2_HEADER = uintptr          /* winnt.h:6012:24 */

type _IMAGE_VXD_HEADER = struct {
	e32_magic        WORD
	e32_border       BYTE
	e32_worder       BYTE
	e32_level        DWORD
	e32_cpu          WORD
	e32_os           WORD
	e32_ver          DWORD
	e32_mflags       DWORD
	e32_mpages       DWORD
	e32_startobj     DWORD
	e32_eip          DWORD
	e32_stackobj     DWORD
	e32_esp          DWORD
	e32_pagesize     DWORD
	e32_lastpagesize DWORD
	e32_fixupsize    DWORD
	e32_fixupsum     DWORD
	e32_ldrsize      DWORD
	e32_ldrsum       DWORD
	e32_objtab       DWORD
	e32_objcnt       DWORD
	e32_objmap       DWORD
	e32_itermap      DWORD
	e32_rsrctab      DWORD
	e32_rsrccnt      DWORD
	e32_restab       DWORD
	e32_enttab       DWORD
	e32_dirtab       DWORD
	e32_dircnt       DWORD
	e32_fpagetab     DWORD
	e32_frectab      DWORD
	e32_impmod       DWORD
	e32_impmodcnt    DWORD
	e32_impproc      DWORD
	e32_pagesum      DWORD
	e32_datapage     DWORD
	e32_preload      DWORD
	e32_nrestab      DWORD
	e32_cbnrestab    DWORD
	e32_nressum      DWORD
	e32_autodata     DWORD
	e32_debuginfo    DWORD
	e32_debuglen     DWORD
	e32_instpreload  DWORD
	e32_instdemand   DWORD
	e32_heapsize     DWORD
	e32_res3         [12]BYTE
	e32_winresoff    DWORD
	e32_winreslen    DWORD
	e32_devid        WORD
	e32_ddkver       WORD
} /* winnt.h:6014:13 */

type IMAGE_VXD_HEADER = _IMAGE_VXD_HEADER /* winnt.h:6066:7 */
type PIMAGE_VXD_HEADER = uintptr          /* winnt.h:6066:24 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_FILE_HEADER = struct {
	Machine              WORD
	NumberOfSections     WORD
	TimeDateStamp        DWORD
	PointerToSymbolTable DWORD
	NumberOfSymbols      DWORD
	SizeOfOptionalHeader WORD
	Characteristics      WORD
} /* winnt.h:6070:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_FILE_HEADER = _IMAGE_FILE_HEADER /* winnt.h:6078:7 */
type PIMAGE_FILE_HEADER = uintptr           /* winnt.h:6078:25 */

type _IMAGE_DATA_DIRECTORY = struct {
	VirtualAddress DWORD
	Size           DWORD
} /* winnt.h:6131:13 */

type IMAGE_DATA_DIRECTORY = _IMAGE_DATA_DIRECTORY /* winnt.h:6134:7 */
type PIMAGE_DATA_DIRECTORY = uintptr              /* winnt.h:6134:28 */

type _IMAGE_OPTIONAL_HEADER = struct {
	Magic                       WORD
	MajorLinkerVersion          BYTE
	MinorLinkerVersion          BYTE
	SizeOfCode                  DWORD
	SizeOfInitializedData       DWORD
	SizeOfUninitializedData     DWORD
	AddressOfEntryPoint         DWORD
	BaseOfCode                  DWORD
	BaseOfData                  DWORD
	ImageBase                   DWORD
	SectionAlignment            DWORD
	FileAlignment               DWORD
	MajorOperatingSystemVersion WORD
	MinorOperatingSystemVersion WORD
	MajorImageVersion           WORD
	MinorImageVersion           WORD
	MajorSubsystemVersion       WORD
	MinorSubsystemVersion       WORD
	Win32VersionValue           DWORD
	SizeOfImage                 DWORD
	SizeOfHeaders               DWORD
	CheckSum                    DWORD
	Subsystem                   WORD
	DllCharacteristics          WORD
	SizeOfStackReserve          DWORD
	SizeOfStackCommit           DWORD
	SizeOfHeapReserve           DWORD
	SizeOfHeapCommit            DWORD
	LoaderFlags                 DWORD
	NumberOfRvaAndSizes         DWORD
	DataDirectory               [16]IMAGE_DATA_DIRECTORY
} /* winnt.h:6138:13 */

type IMAGE_OPTIONAL_HEADER32 = _IMAGE_OPTIONAL_HEADER /* winnt.h:6171:7 */
type PIMAGE_OPTIONAL_HEADER32 = uintptr               /* winnt.h:6171:31 */

type _IMAGE_ROM_OPTIONAL_HEADER = struct {
	Magic                   WORD
	MajorLinkerVersion      BYTE
	MinorLinkerVersion      BYTE
	SizeOfCode              DWORD
	SizeOfInitializedData   DWORD
	SizeOfUninitializedData DWORD
	AddressOfEntryPoint     DWORD
	BaseOfCode              DWORD
	BaseOfData              DWORD
	BaseOfBss               DWORD
	GprMask                 DWORD
	CprMask                 [4]DWORD
	GpValue                 DWORD
} /* winnt.h:6173:13 */

type IMAGE_ROM_OPTIONAL_HEADER = _IMAGE_ROM_OPTIONAL_HEADER /* winnt.h:6187:7 */
type PIMAGE_ROM_OPTIONAL_HEADER = uintptr                   /* winnt.h:6187:33 */

type _IMAGE_OPTIONAL_HEADER64 = struct {
	Magic                       WORD
	MajorLinkerVersion          BYTE
	MinorLinkerVersion          BYTE
	SizeOfCode                  DWORD
	SizeOfInitializedData       DWORD
	SizeOfUninitializedData     DWORD
	AddressOfEntryPoint         DWORD
	BaseOfCode                  DWORD
	ImageBase                   ULONGLONG
	SectionAlignment            DWORD
	FileAlignment               DWORD
	MajorOperatingSystemVersion WORD
	MinorOperatingSystemVersion WORD
	MajorImageVersion           WORD
	MinorImageVersion           WORD
	MajorSubsystemVersion       WORD
	MinorSubsystemVersion       WORD
	Win32VersionValue           DWORD
	SizeOfImage                 DWORD
	SizeOfHeaders               DWORD
	CheckSum                    DWORD
	Subsystem                   WORD
	DllCharacteristics          WORD
	SizeOfStackReserve          ULONGLONG
	SizeOfStackCommit           ULONGLONG
	SizeOfHeapReserve           ULONGLONG
	SizeOfHeapCommit            ULONGLONG
	LoaderFlags                 DWORD
	NumberOfRvaAndSizes         DWORD
	DataDirectory               [16]IMAGE_DATA_DIRECTORY
} /* winnt.h:6189:13 */

type IMAGE_OPTIONAL_HEADER64 = _IMAGE_OPTIONAL_HEADER64 /* winnt.h:6220:7 */
type PIMAGE_OPTIONAL_HEADER64 = uintptr                 /* winnt.h:6220:31 */

type IMAGE_OPTIONAL_HEADER = IMAGE_OPTIONAL_HEADER32   /* winnt.h:6237:37 */
type PIMAGE_OPTIONAL_HEADER = PIMAGE_OPTIONAL_HEADER32 /* winnt.h:6238:38 */

type _IMAGE_NT_HEADERS64 = struct {
	Signature      DWORD
	FileHeader     IMAGE_FILE_HEADER
	OptionalHeader IMAGE_OPTIONAL_HEADER64
} /* winnt.h:6243:13 */

type IMAGE_NT_HEADERS64 = _IMAGE_NT_HEADERS64 /* winnt.h:6247:7 */
type PIMAGE_NT_HEADERS64 = uintptr            /* winnt.h:6247:26 */

type _IMAGE_NT_HEADERS = struct {
	Signature      DWORD
	FileHeader     IMAGE_FILE_HEADER
	OptionalHeader IMAGE_OPTIONAL_HEADER32
} /* winnt.h:6249:13 */

type IMAGE_NT_HEADERS32 = _IMAGE_NT_HEADERS /* winnt.h:6253:7 */
type PIMAGE_NT_HEADERS32 = uintptr          /* winnt.h:6253:26 */

type _IMAGE_ROM_HEADERS = struct {
	FileHeader     IMAGE_FILE_HEADER
	OptionalHeader IMAGE_ROM_OPTIONAL_HEADER
} /* winnt.h:6255:13 */

type IMAGE_ROM_HEADERS = _IMAGE_ROM_HEADERS /* winnt.h:6258:7 */
type PIMAGE_ROM_HEADERS = uintptr           /* winnt.h:6258:25 */

type IMAGE_NT_HEADERS = IMAGE_NT_HEADERS32   /* winnt.h:6264:32 */
type PIMAGE_NT_HEADERS = PIMAGE_NT_HEADERS32 /* winnt.h:6265:33 */

type ANON_OBJECT_HEADER1 = struct {
	Sig1          WORD
	Sig2          WORD
	Version       WORD
	Machine       WORD
	TimeDateStamp DWORD
	ClassID       CLSID
	SizeOfData    DWORD
} /* winnt.h:6313:13 */

type ANON_OBJECT_HEADER = ANON_OBJECT_HEADER1 /* winnt.h:6321:7 */

type ANON_OBJECT_HEADER_V21 = struct {
	Sig1           WORD
	Sig2           WORD
	Version        WORD
	Machine        WORD
	TimeDateStamp  DWORD
	ClassID        CLSID
	SizeOfData     DWORD
	Flags          DWORD
	MetaDataSize   DWORD
	MetaDataOffset DWORD
} /* winnt.h:6323:13 */

type ANON_OBJECT_HEADER_V2 = ANON_OBJECT_HEADER_V21 /* winnt.h:6334:7 */

type ANON_OBJECT_HEADER_BIGOBJ1 = struct {
	Sig1                 WORD
	Sig2                 WORD
	Version              WORD
	Machine              WORD
	TimeDateStamp        DWORD
	ClassID              CLSID
	SizeOfData           DWORD
	Flags                DWORD
	MetaDataSize         DWORD
	MetaDataOffset       DWORD
	NumberOfSections     DWORD
	PointerToSymbolTable DWORD
	NumberOfSymbols      DWORD
} /* winnt.h:6336:13 */

type ANON_OBJECT_HEADER_BIGOBJ = ANON_OBJECT_HEADER_BIGOBJ1 /* winnt.h:6350:7 */

type _IMAGE_SECTION_HEADER = struct {
	Name                 [8]BYTE
	Misc                 struct{ PhysicalAddress DWORD }
	VirtualAddress       DWORD
	SizeOfRawData        DWORD
	PointerToRawData     DWORD
	PointerToRelocations DWORD
	PointerToLinenumbers DWORD
	NumberOfRelocations  WORD
	NumberOfLinenumbers  WORD
	Characteristics      DWORD
} /* winnt.h:6354:13 */

type IMAGE_SECTION_HEADER = _IMAGE_SECTION_HEADER /* winnt.h:6368:7 */
type PIMAGE_SECTION_HEADER = uintptr              /* winnt.h:6368:28 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type _IMAGE_SYMBOL = struct {
	N struct {
		_         [0]uint32
		ShortName [8]BYTE
	}
	Value              DWORD
	SectionNumber      SHORT
	Type               WORD
	StorageClass       BYTE
	NumberOfAuxSymbols BYTE
	_                  [2]byte
} /* winnt.h:6418:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type IMAGE_SYMBOL = _IMAGE_SYMBOL /* winnt.h:6432:7 */
type PIMAGE_SYMBOL = uintptr      /* winnt.h:6433:36 */

type _IMAGE_SYMBOL_EX = struct {
	N struct {
		_         [0]uint32
		ShortName [8]BYTE
	}
	Value              DWORD
	SectionNumber      LONG
	Type               WORD
	StorageClass       BYTE
	NumberOfAuxSymbols BYTE
} /* winnt.h:6437:13 */

type IMAGE_SYMBOL_EX = _IMAGE_SYMBOL_EX /* winnt.h:6451:7 */
type PIMAGE_SYMBOL_EX = uintptr         /* winnt.h:6451:33 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type IMAGE_AUX_SYMBOL_TOKEN_DEF1 = struct {
	bAuxType         BYTE
	bReserved        BYTE
	_                [2]byte
	SymbolTableIndex DWORD
	rgbReserved      [12]BYTE
} /* winnt.h:6544:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type IMAGE_AUX_SYMBOL_TOKEN_DEF = IMAGE_AUX_SYMBOL_TOKEN_DEF1 /* winnt.h:6549:7 */
type PIMAGE_AUX_SYMBOL_TOKEN_DEF = uintptr                    /* winnt.h:6549:44 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_AUX_SYMBOL = struct {
	Sym struct {
		TagIndex DWORD
		Misc     struct {
			_    [0]uint32
			LnSz struct {
				Linenumber WORD
				Size       WORD
			}
		}
		FcnAry struct {
			Function struct {
				PointerToLinenumber   DWORD
				PointerToNextFunction DWORD
			}
		}
		TvIndex WORD
		_       [2]byte
	}
} /* winnt.h:6552:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_AUX_SYMBOL = _IMAGE_AUX_SYMBOL /* winnt.h:6589:7 */
type PIMAGE_AUX_SYMBOL = uintptr          /* winnt.h:6589:34 */

type _IMAGE_AUX_SYMBOL_EX = struct {
	Sym struct {
		WeakDefaultSymIndex DWORD
		WeakSearchType      DWORD
		rgbReserved         [12]BYTE
	}
	_ [4]byte
} /* winnt.h:6591:13 */

type IMAGE_AUX_SYMBOL_EX = _IMAGE_AUX_SYMBOL_EX /* winnt.h:6619:7 */
type PIMAGE_AUX_SYMBOL_EX = uintptr             /* winnt.h:6619:37 */

type IMAGE_AUX_SYMBOL_TYPE = uint32 /* winnt.h:6625:7 */

type _IMAGE_RELOCATION = struct {
	__0              struct{ VirtualAddress DWORD }
	SymbolTableIndex DWORD
	Type             WORD
	_                [2]byte
} /* winnt.h:6639:13 */

type IMAGE_RELOCATION = _IMAGE_RELOCATION /* winnt.h:6646:7 */
type PIMAGE_RELOCATION = uintptr          /* winnt.h:6647:40 */

type _IMAGE_LINENUMBER = struct {
	Type       struct{ SymbolTableIndex DWORD }
	Linenumber WORD
	_          [2]byte
} /* winnt.h:6977:13 */

type IMAGE_LINENUMBER = _IMAGE_LINENUMBER /* winnt.h:6983:7 */
type PIMAGE_LINENUMBER = uintptr          /* winnt.h:6984:40 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_BASE_RELOCATION = struct {
	VirtualAddress DWORD
	SizeOfBlock    DWORD
} /* winnt.h:6990:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_BASE_RELOCATION = _IMAGE_BASE_RELOCATION /* winnt.h:6993:7 */
type PIMAGE_BASE_RELOCATION = uintptr               /* winnt.h:6994:45 */

type _IMAGE_ARCHIVE_MEMBER_HEADER = struct {
	Name      [16]BYTE
	Date      [12]BYTE
	UserID    [6]BYTE
	GroupID   [6]BYTE
	Mode      [8]BYTE
	Size      [10]BYTE
	EndHeader [2]BYTE
} /* winnt.h:7017:13 */

type IMAGE_ARCHIVE_MEMBER_HEADER = _IMAGE_ARCHIVE_MEMBER_HEADER /* winnt.h:7025:7 */
type PIMAGE_ARCHIVE_MEMBER_HEADER = uintptr                     /* winnt.h:7025:35 */

type _IMAGE_EXPORT_DIRECTORY = struct {
	Characteristics       DWORD
	TimeDateStamp         DWORD
	MajorVersion          WORD
	MinorVersion          WORD
	Name                  DWORD
	Base                  DWORD
	NumberOfFunctions     DWORD
	NumberOfNames         DWORD
	AddressOfFunctions    DWORD
	AddressOfNames        DWORD
	AddressOfNameOrdinals DWORD
} /* winnt.h:7029:13 */

type IMAGE_EXPORT_DIRECTORY = _IMAGE_EXPORT_DIRECTORY /* winnt.h:7041:7 */
type PIMAGE_EXPORT_DIRECTORY = uintptr                /* winnt.h:7041:30 */

type _IMAGE_IMPORT_BY_NAME = struct {
	Hint WORD
	Name [1]CHAR
	_    [1]byte
} /* winnt.h:7043:13 */

type IMAGE_IMPORT_BY_NAME = _IMAGE_IMPORT_BY_NAME /* winnt.h:7046:7 */
type PIMAGE_IMPORT_BY_NAME = uintptr              /* winnt.h:7046:28 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_THUNK_DATA64 = struct {
	u1 struct{ ForwarderString ULONGLONG }
} /* winnt.h:7050:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_THUNK_DATA64 = _IMAGE_THUNK_DATA64 /* winnt.h:7057:7 */
type PIMAGE_THUNK_DATA64 = uintptr            /* winnt.h:7058:32 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _IMAGE_THUNK_DATA32 = struct {
	u1 struct{ ForwarderString DWORD }
} /* winnt.h:7062:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMAGE_THUNK_DATA32 = _IMAGE_THUNK_DATA32 /* winnt.h:7069:7 */
type PIMAGE_THUNK_DATA32 = uintptr            /* winnt.h:7070:32 */

type PIMAGE_TLS_CALLBACK = uintptr /* winnt.h:7079:18 */

type _IMAGE_TLS_DIRECTORY64 = struct {
	StartAddressOfRawData ULONGLONG
	EndAddressOfRawData   ULONGLONG
	AddressOfIndex        ULONGLONG
	AddressOfCallBacks    ULONGLONG
	SizeOfZeroFill        DWORD
	Characteristics       DWORD
} /* winnt.h:7081:13 */

type IMAGE_TLS_DIRECTORY64 = _IMAGE_TLS_DIRECTORY64 /* winnt.h:7088:7 */
type PIMAGE_TLS_DIRECTORY64 = uintptr               /* winnt.h:7089:35 */

type _IMAGE_TLS_DIRECTORY32 = struct {
	StartAddressOfRawData DWORD
	EndAddressOfRawData   DWORD
	AddressOfIndex        DWORD
	AddressOfCallBacks    DWORD
	SizeOfZeroFill        DWORD
	Characteristics       DWORD
} /* winnt.h:7091:13 */

type IMAGE_TLS_DIRECTORY32 = _IMAGE_TLS_DIRECTORY32 /* winnt.h:7098:7 */
type PIMAGE_TLS_DIRECTORY32 = uintptr               /* winnt.h:7099:35 */

type IMAGE_THUNK_DATA = IMAGE_THUNK_DATA32         /* winnt.h:7112:32 */
type PIMAGE_THUNK_DATA = PIMAGE_THUNK_DATA32       /* winnt.h:7113:33 */
type IMAGE_TLS_DIRECTORY = IMAGE_TLS_DIRECTORY32   /* winnt.h:7115:35 */
type PIMAGE_TLS_DIRECTORY = PIMAGE_TLS_DIRECTORY32 /* winnt.h:7116:36 */

type _IMAGE_IMPORT_DESCRIPTOR = struct {
	__0            struct{ Characteristics DWORD }
	TimeDateStamp  DWORD
	ForwarderChain DWORD
	Name           DWORD
	FirstThunk     DWORD
} /* winnt.h:7119:13 */

type IMAGE_IMPORT_DESCRIPTOR = _IMAGE_IMPORT_DESCRIPTOR /* winnt.h:7129:7 */
type PIMAGE_IMPORT_DESCRIPTOR = uintptr                 /* winnt.h:7130:47 */

type _IMAGE_BOUND_IMPORT_DESCRIPTOR = struct {
	TimeDateStamp               DWORD
	OffsetModuleName            WORD
	NumberOfModuleForwarderRefs WORD
} /* winnt.h:7132:13 */

type IMAGE_BOUND_IMPORT_DESCRIPTOR = _IMAGE_BOUND_IMPORT_DESCRIPTOR /* winnt.h:7136:7 */
type PIMAGE_BOUND_IMPORT_DESCRIPTOR = uintptr                       /* winnt.h:7136:37 */

type _IMAGE_BOUND_FORWARDER_REF = struct {
	TimeDateStamp    DWORD
	OffsetModuleName WORD
	Reserved         WORD
} /* winnt.h:7138:13 */

type IMAGE_BOUND_FORWARDER_REF = _IMAGE_BOUND_FORWARDER_REF /* winnt.h:7142:7 */
type PIMAGE_BOUND_FORWARDER_REF = uintptr                   /* winnt.h:7142:33 */

type _IMAGE_DELAYLOAD_DESCRIPTOR = struct {
	Attributes                 struct{ AllAttributes DWORD }
	DllNameRVA                 DWORD
	ModuleHandleRVA            DWORD
	ImportAddressTableRVA      DWORD
	ImportNameTableRVA         DWORD
	BoundImportAddressTableRVA DWORD
	UnloadInformationTableRVA  DWORD
	TimeDateStamp              DWORD
} /* winnt.h:7144:13 */

type IMAGE_DELAYLOAD_DESCRIPTOR = _IMAGE_DELAYLOAD_DESCRIPTOR /* winnt.h:7159:7 */
type PIMAGE_DELAYLOAD_DESCRIPTOR = uintptr                    /* winnt.h:7159:34 */
type PCIMAGE_DELAYLOAD_DESCRIPTOR = uintptr                   /* winnt.h:7160:46 */

type _IMAGE_RESOURCE_DIRECTORY = struct {
	Characteristics      DWORD
	TimeDateStamp        DWORD
	MajorVersion         WORD
	MinorVersion         WORD
	NumberOfNamedEntries WORD
	NumberOfIdEntries    WORD
} /* winnt.h:7162:13 */

type IMAGE_RESOURCE_DIRECTORY = _IMAGE_RESOURCE_DIRECTORY /* winnt.h:7169:7 */
type PIMAGE_RESOURCE_DIRECTORY = uintptr                  /* winnt.h:7169:32 */

type _IMAGE_RESOURCE_DIRECTORY_ENTRY = struct {
	__0 struct {
		__0 struct {
			_          [0]uint32
			NameOffset uint32 /* DWORD NameOffset: 31, DWORD NameIsString: 1 */
		}
	}
	__4 struct{ OffsetToData DWORD }
} /* winnt.h:7174:13 */

type IMAGE_RESOURCE_DIRECTORY_ENTRY = _IMAGE_RESOURCE_DIRECTORY_ENTRY /* winnt.h:7190:7 */
type PIMAGE_RESOURCE_DIRECTORY_ENTRY = uintptr                        /* winnt.h:7190:38 */

type _IMAGE_RESOURCE_DIRECTORY_STRING = struct {
	Length     WORD
	NameString [1]CHAR
	_          [1]byte
} /* winnt.h:7192:13 */

type IMAGE_RESOURCE_DIRECTORY_STRING = _IMAGE_RESOURCE_DIRECTORY_STRING /* winnt.h:7195:7 */
type PIMAGE_RESOURCE_DIRECTORY_STRING = uintptr                         /* winnt.h:7195:39 */

type _IMAGE_RESOURCE_DIR_STRING_U = struct {
	Length     WORD
	NameString [1]WCHAR
} /* winnt.h:7197:13 */

type IMAGE_RESOURCE_DIR_STRING_U = _IMAGE_RESOURCE_DIR_STRING_U /* winnt.h:7200:7 */
type PIMAGE_RESOURCE_DIR_STRING_U = uintptr                     /* winnt.h:7200:35 */

type _IMAGE_RESOURCE_DATA_ENTRY = struct {
	OffsetToData DWORD
	Size         DWORD
	CodePage     DWORD
	Reserved     DWORD
} /* winnt.h:7202:13 */

type IMAGE_RESOURCE_DATA_ENTRY = _IMAGE_RESOURCE_DATA_ENTRY /* winnt.h:7207:7 */
type PIMAGE_RESOURCE_DATA_ENTRY = uintptr                   /* winnt.h:7207:33 */

type IMAGE_LOAD_CONFIG_DIRECTORY32 = struct {
	Size                          DWORD
	TimeDateStamp                 DWORD
	MajorVersion                  WORD
	MinorVersion                  WORD
	GlobalFlagsClear              DWORD
	GlobalFlagsSet                DWORD
	CriticalSectionDefaultTimeout DWORD
	DeCommitFreeBlockThreshold    DWORD
	DeCommitTotalFreeThreshold    DWORD
	LockPrefixTable               DWORD
	MaximumAllocationSize         DWORD
	VirtualMemoryThreshold        DWORD
	ProcessHeapFlags              DWORD
	ProcessAffinityMask           DWORD
	CSDVersion                    WORD
	Reserved1                     WORD
	EditList                      DWORD
	SecurityCookie                DWORD
	SEHandlerTable                DWORD
	SEHandlerCount                DWORD
}                                             /* winnt.h:7230:7 */
type PIMAGE_LOAD_CONFIG_DIRECTORY32 = uintptr /* winnt.h:7230:37 */

type IMAGE_LOAD_CONFIG_DIRECTORY64 = struct {
	Size                          DWORD
	TimeDateStamp                 DWORD
	MajorVersion                  WORD
	MinorVersion                  WORD
	GlobalFlagsClear              DWORD
	GlobalFlagsSet                DWORD
	CriticalSectionDefaultTimeout DWORD
	DeCommitFreeBlockThreshold    ULONGLONG
	DeCommitTotalFreeThreshold    ULONGLONG
	LockPrefixTable               ULONGLONG
	MaximumAllocationSize         ULONGLONG
	VirtualMemoryThreshold        ULONGLONG
	ProcessAffinityMask           ULONGLONG
	ProcessHeapFlags              DWORD
	CSDVersion                    WORD
	Reserved1                     WORD
	EditList                      ULONGLONG
	SecurityCookie                ULONGLONG
	SEHandlerTable                ULONGLONG
	SEHandlerCount                ULONGLONG
}                                             /* winnt.h:7253:7 */
type PIMAGE_LOAD_CONFIG_DIRECTORY64 = uintptr /* winnt.h:7253:37 */

type IMAGE_LOAD_CONFIG_DIRECTORY = IMAGE_LOAD_CONFIG_DIRECTORY32   /* winnt.h:7259:43 */
type PIMAGE_LOAD_CONFIG_DIRECTORY = PIMAGE_LOAD_CONFIG_DIRECTORY32 /* winnt.h:7260:44 */

type _IMAGE_CE_RUNTIME_FUNCTION_ENTRY = struct {
	FuncStart DWORD
	PrologLen uint32 /* DWORD PrologLen: 8, DWORD FuncLen: 22, DWORD ThirtyTwoBit: 1, DWORD ExceptionFlag: 1 */
} /* winnt.h:7263:13 */

type IMAGE_CE_RUNTIME_FUNCTION_ENTRY = _IMAGE_CE_RUNTIME_FUNCTION_ENTRY /* winnt.h:7269:7 */
type PIMAGE_CE_RUNTIME_FUNCTION_ENTRY = uintptr                         /* winnt.h:7269:39 */

type _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY = struct {
	BeginAddress     ULONGLONG
	EndAddress       ULONGLONG
	ExceptionHandler ULONGLONG
	HandlerData      ULONGLONG
	PrologEndAddress ULONGLONG
} /* winnt.h:7271:13 */

type IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY = _IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY /* winnt.h:7277:7 */
type PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY = uintptr                              /* winnt.h:7277:44 */

type _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY = struct {
	BeginAddress     DWORD
	EndAddress       DWORD
	ExceptionHandler DWORD
	HandlerData      DWORD
	PrologEndAddress DWORD
} /* winnt.h:7279:13 */

type IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY = _IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY /* winnt.h:7285:7 */
type PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY = uintptr                            /* winnt.h:7285:42 */

type _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY = struct {
	BeginAddress DWORD
	__4          struct{ UnwindData DWORD }
} /* winnt.h:7287:13 */

type IMAGE_ARM_RUNTIME_FUNCTION_ENTRY = _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY /* winnt.h:7303:7 */
type PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY = uintptr                          /* winnt.h:7303:40 */

type _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY = struct {
	BeginAddress DWORD
	__4          struct{ UnwindData DWORD }
} /* winnt.h:7305:13 */

type IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY = _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY /* winnt.h:7319:7 */
type PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY = uintptr                            /* winnt.h:7319:42 */

type _IMAGE_RUNTIME_FUNCTION_ENTRY1 = struct {
	BeginAddress DWORD
	EndAddress   DWORD
	__8          struct{ UnwindInfoAddress DWORD }
} /* winnt.h:7321:13 */

type _IMAGE_RUNTIME_FUNCTION_ENTRY = _IMAGE_RUNTIME_FUNCTION_ENTRY1 /* winnt.h:7328:7 */
type _PIMAGE_RUNTIME_FUNCTION_ENTRY = uintptr                       /* winnt.h:7328:37 */

type IMAGE_IA64_RUNTIME_FUNCTION_ENTRY = _IMAGE_RUNTIME_FUNCTION_ENTRY   /* winnt.h:7330:43 */
type PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY = _PIMAGE_RUNTIME_FUNCTION_ENTRY /* winnt.h:7331:44 */

type IMAGE_RUNTIME_FUNCTION_ENTRY = _IMAGE_RUNTIME_FUNCTION_ENTRY   /* winnt.h:7345:43 */
type PIMAGE_RUNTIME_FUNCTION_ENTRY = _PIMAGE_RUNTIME_FUNCTION_ENTRY /* winnt.h:7346:44 */

type _IMAGE_DEBUG_DIRECTORY = struct {
	Characteristics  DWORD
	TimeDateStamp    DWORD
	MajorVersion     WORD
	MinorVersion     WORD
	Type             DWORD
	SizeOfData       DWORD
	AddressOfRawData DWORD
	PointerToRawData DWORD
} /* winnt.h:7349:13 */

type IMAGE_DEBUG_DIRECTORY = _IMAGE_DEBUG_DIRECTORY /* winnt.h:7358:7 */
type PIMAGE_DEBUG_DIRECTORY = uintptr               /* winnt.h:7358:29 */

type _IMAGE_COFF_SYMBOLS_HEADER = struct {
	NumberOfSymbols      DWORD
	LvaToFirstSymbol     DWORD
	NumberOfLinenumbers  DWORD
	LvaToFirstLinenumber DWORD
	RvaToFirstByteOfCode DWORD
	RvaToLastByteOfCode  DWORD
	RvaToFirstByteOfData DWORD
	RvaToLastByteOfData  DWORD
} /* winnt.h:7373:13 */

type IMAGE_COFF_SYMBOLS_HEADER = _IMAGE_COFF_SYMBOLS_HEADER /* winnt.h:7382:7 */
type PIMAGE_COFF_SYMBOLS_HEADER = uintptr                   /* winnt.h:7382:33 */

type _FPO_DATA = struct {
	ulOffStart DWORD
	cbProcSize DWORD
	cdwLocals  DWORD
	cdwParams  WORD
	cbProlog   uint16 /* WORD cbProlog: 8, WORD cbRegs: 3, WORD fHasSEH: 1, WORD fUseBP: 1, WORD reserved: 1, WORD cbFrame: 2 */
} /* winnt.h:7389:13 */

type FPO_DATA = _FPO_DATA /* winnt.h:7400:7 */
type PFPO_DATA = uintptr  /* winnt.h:7400:16 */

type _IMAGE_DEBUG_MISC = struct {
	DataType DWORD
	Length   DWORD
	Unicode  BOOLEAN
	Reserved [3]BYTE
	Data     [1]BYTE
	_        [3]byte
} /* winnt.h:7405:13 */

type IMAGE_DEBUG_MISC = _IMAGE_DEBUG_MISC /* winnt.h:7411:7 */
type PIMAGE_DEBUG_MISC = uintptr          /* winnt.h:7411:24 */

type _IMAGE_FUNCTION_ENTRY = struct {
	StartingAddress DWORD
	EndingAddress   DWORD
	EndOfPrologue   DWORD
} /* winnt.h:7413:13 */

type IMAGE_FUNCTION_ENTRY = _IMAGE_FUNCTION_ENTRY /* winnt.h:7417:7 */
type PIMAGE_FUNCTION_ENTRY = uintptr              /* winnt.h:7417:28 */

type _IMAGE_FUNCTION_ENTRY64 = struct {
	StartingAddress ULONGLONG
	EndingAddress   ULONGLONG
	__16            struct{ EndOfPrologue ULONGLONG }
} /* winnt.h:7419:13 */

type IMAGE_FUNCTION_ENTRY64 = _IMAGE_FUNCTION_ENTRY64 /* winnt.h:7426:7 */
type PIMAGE_FUNCTION_ENTRY64 = uintptr                /* winnt.h:7426:30 */

type _IMAGE_SEPARATE_DEBUG_HEADER = struct {
	Signature          WORD
	Flags              WORD
	Machine            WORD
	Characteristics    WORD
	TimeDateStamp      DWORD
	CheckSum           DWORD
	ImageBase          DWORD
	SizeOfImage        DWORD
	NumberOfSections   DWORD
	ExportedNamesSize  DWORD
	DebugDirectorySize DWORD
	SectionAlignment   DWORD
	Reserved           [2]DWORD
} /* winnt.h:7428:13 */

type IMAGE_SEPARATE_DEBUG_HEADER = _IMAGE_SEPARATE_DEBUG_HEADER /* winnt.h:7442:7 */
type PIMAGE_SEPARATE_DEBUG_HEADER = uintptr                     /* winnt.h:7442:35 */

type _NON_PAGED_DEBUG_INFO = struct {
	Signature       WORD
	Flags           WORD
	Size            DWORD
	Machine         WORD
	Characteristics WORD
	TimeDateStamp   DWORD
	CheckSum        DWORD
	SizeOfImage     DWORD
	ImageBase       ULONGLONG
} /* winnt.h:7444:13 */

type NON_PAGED_DEBUG_INFO = _NON_PAGED_DEBUG_INFO /* winnt.h:7454:7 */
type PNON_PAGED_DEBUG_INFO = uintptr              /* winnt.h:7454:28 */

type _ImageArchitectureHeader = struct {
	AmaskValue    uint32 /* unsigned AmaskValue: 1, int Adummy1: 7, unsigned AmaskShift: 8, int Adummy2: 16 */
	FirstEntryRVA DWORD
} /* winnt.h:7462:13 */

type IMAGE_ARCHITECTURE_HEADER = _ImageArchitectureHeader /* winnt.h:7468:7 */
type PIMAGE_ARCHITECTURE_HEADER = uintptr                 /* winnt.h:7468:33 */

type _ImageArchitectureEntry = struct {
	FixupInstRVA DWORD
	NewInst      DWORD
} /* winnt.h:7470:13 */

type IMAGE_ARCHITECTURE_ENTRY = _ImageArchitectureEntry /* winnt.h:7473:7 */
type PIMAGE_ARCHITECTURE_ENTRY = uintptr                /* winnt.h:7473:32 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMPORT_OBJECT_HEADER1 = struct {
	Sig1          WORD
	Sig2          WORD
	Version       WORD
	Machine       WORD
	TimeDateStamp DWORD
	SizeOfData    DWORD
	__16          struct{ Ordinal WORD }
	Type          uint16 /* WORD Type: 2, WORD NameType: 3, WORD Reserved: 11 */
} /* winnt.h:7478:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IMPORT_OBJECT_HEADER = IMPORT_OBJECT_HEADER1 /* winnt.h:7492:7 */

type IMPORT_OBJECT_TYPE = uint32 /* winnt.h:7496:7 */

type IMPORT_OBJECT_NAME_TYPE = uint32 /* winnt.h:7500:7 */

type ReplacesCorHdrNumericDefines = uint32 /* winnt.h:7511:7 */

type IMAGE_COR20_HEADER1 = struct {
	cb                      DWORD
	MajorRuntimeVersion     WORD
	MinorRuntimeVersion     WORD
	MetaData                IMAGE_DATA_DIRECTORY
	Flags                   DWORD
	__20                    struct{ EntryPointToken DWORD }
	Resources               IMAGE_DATA_DIRECTORY
	StrongNameSignature     IMAGE_DATA_DIRECTORY
	CodeManagerTable        IMAGE_DATA_DIRECTORY
	VTableFixups            IMAGE_DATA_DIRECTORY
	ExportAddressTableJumps IMAGE_DATA_DIRECTORY
	ManagedNativeHeader     IMAGE_DATA_DIRECTORY
} /* winnt.h:7513:13 */

type IMAGE_COR20_HEADER = IMAGE_COR20_HEADER1 /* winnt.h:7529:7 */
type PIMAGE_COR20_HEADER = uintptr            /* winnt.h:7529:26 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type SLIST_ENTRY = _SINGLE_LIST_ENTRY /* winnt.h:7634:39 */
type PSLIST_ENTRY = uintptr           /* winnt.h:7634:51 */

type _SLIST_HEADER = struct{ Alignment ULONGLONG } /* winnt.h:7636:13 */

type SLIST_HEADER = _SLIST_HEADER /* winnt.h:7643:7 */
type PSLIST_HEADER = uintptr      /* winnt.h:7643:20 */

type _RTL_RUN_ONCE = struct{ Ptr PVOID } /* winnt.h:7661:9 */

type RTL_RUN_ONCE = _RTL_RUN_ONCE    /* winnt.h:7661:45 */
type PRTL_RUN_ONCE = uintptr         /* winnt.h:7661:59 */
type PRTL_RUN_ONCE_INIT_FN = uintptr /* winnt.h:7662:15 */

type _RTL_BARRIER = struct {
	Reserved1 DWORD
	Reserved2 DWORD
	Reserved3 [2]ULONG_PTR
	Reserved4 DWORD
	Reserved5 DWORD
} /* winnt.h:7671:11 */

type RTL_BARRIER = _RTL_BARRIER /* winnt.h:7677:5 */
type PRTL_BARRIER = uintptr     /* winnt.h:7677:17 */

type _MESSAGE_RESOURCE_ENTRY = struct {
	Length WORD
	Flags  WORD
	Text   [1]BYTE
	_      [1]byte
} /* winnt.h:7780:13 */

type MESSAGE_RESOURCE_ENTRY = _MESSAGE_RESOURCE_ENTRY /* winnt.h:7784:7 */
type PMESSAGE_RESOURCE_ENTRY = uintptr                /* winnt.h:7784:30 */

type _MESSAGE_RESOURCE_BLOCK = struct {
	LowId           DWORD
	HighId          DWORD
	OffsetToEntries DWORD
} /* winnt.h:7802:13 */

type MESSAGE_RESOURCE_BLOCK = _MESSAGE_RESOURCE_BLOCK /* winnt.h:7806:7 */
type PMESSAGE_RESOURCE_BLOCK = uintptr                /* winnt.h:7806:30 */

type _MESSAGE_RESOURCE_DATA = struct {
	NumberOfBlocks DWORD
	Blocks         [1]MESSAGE_RESOURCE_BLOCK
} /* winnt.h:7808:13 */

type MESSAGE_RESOURCE_DATA = _MESSAGE_RESOURCE_DATA /* winnt.h:7811:7 */
type PMESSAGE_RESOURCE_DATA = uintptr               /* winnt.h:7811:29 */

type _OSVERSIONINFOA = struct {
	dwOSVersionInfoSize DWORD
	dwMajorVersion      DWORD
	dwMinorVersion      DWORD
	dwBuildNumber       DWORD
	dwPlatformId        DWORD
	szCSDVersion        [128]CHAR
} /* winnt.h:7813:13 */

type OSVERSIONINFOA = _OSVERSIONINFOA /* winnt.h:7820:7 */
type POSVERSIONINFOA = uintptr        /* winnt.h:7820:22 */
type LPOSVERSIONINFOA = uintptr       /* winnt.h:7820:39 */

type _OSVERSIONINFOW = struct {
	dwOSVersionInfoSize DWORD
	dwMajorVersion      DWORD
	dwMinorVersion      DWORD
	dwBuildNumber       DWORD
	dwPlatformId        DWORD
	szCSDVersion        [128]WCHAR
} /* winnt.h:7822:13 */

type OSVERSIONINFOW = _OSVERSIONINFOW     /* winnt.h:7829:7 */
type POSVERSIONINFOW = uintptr            /* winnt.h:7829:22 */
type LPOSVERSIONINFOW = uintptr           /* winnt.h:7829:39 */
type RTL_OSVERSIONINFOW = _OSVERSIONINFOW /* winnt.h:7829:57 */
type PRTL_OSVERSIONINFOW = uintptr        /* winnt.h:7829:76 */

type OSVERSIONINFO = OSVERSIONINFOW     /* winnt.h:7831:5 */
type POSVERSIONINFO = POSVERSIONINFOW   /* winnt.h:7832:5 */
type LPOSVERSIONINFO = LPOSVERSIONINFOW /* winnt.h:7833:5 */

type _OSVERSIONINFOEXA = struct {
	dwOSVersionInfoSize DWORD
	dwMajorVersion      DWORD
	dwMinorVersion      DWORD
	dwBuildNumber       DWORD
	dwPlatformId        DWORD
	szCSDVersion        [128]CHAR
	wServicePackMajor   WORD
	wServicePackMinor   WORD
	wSuiteMask          WORD
	wProductType        BYTE
	wReserved           BYTE
} /* winnt.h:7835:13 */

type OSVERSIONINFOEXA = _OSVERSIONINFOEXA /* winnt.h:7847:7 */
type POSVERSIONINFOEXA = uintptr          /* winnt.h:7847:24 */
type LPOSVERSIONINFOEXA = uintptr         /* winnt.h:7847:43 */

type _OSVERSIONINFOEXW = struct {
	dwOSVersionInfoSize DWORD
	dwMajorVersion      DWORD
	dwMinorVersion      DWORD
	dwBuildNumber       DWORD
	dwPlatformId        DWORD
	szCSDVersion        [128]WCHAR
	wServicePackMajor   WORD
	wServicePackMinor   WORD
	wSuiteMask          WORD
	wProductType        BYTE
	wReserved           BYTE
} /* winnt.h:7849:13 */

type OSVERSIONINFOEXW = _OSVERSIONINFOEXW     /* winnt.h:7861:7 */
type POSVERSIONINFOEXW = uintptr              /* winnt.h:7861:24 */
type LPOSVERSIONINFOEXW = uintptr             /* winnt.h:7861:43 */
type RTL_OSVERSIONINFOEXW = _OSVERSIONINFOEXW /* winnt.h:7861:63 */
type PRTL_OSVERSIONINFOEXW = uintptr          /* winnt.h:7861:84 */

type OSVERSIONINFOEX = OSVERSIONINFOEXW     /* winnt.h:7863:5 */
type POSVERSIONINFOEX = POSVERSIONINFOEXW   /* winnt.h:7864:5 */
type LPOSVERSIONINFOEX = LPOSVERSIONINFOEXW /* winnt.h:7865:5 */

type RTL_UMS_THREAD_INFO_CLASS = uint32   /* winnt.h:7918:7 */
type PRTL_UMS_THREAD_INFO_CLASS = uintptr /* winnt.h:7918:33 */

type RTL_UMS_SCHEDULER_REASON = uint32        /* winnt.h:7924:7 */
type PRTL_UMS_SCHEDULER_REASON = uintptr      /* winnt.h:7924:32 */
type PRTL_UMS_SCHEDULER_ENTRY_POINT = uintptr /* winnt.h:7927:43 */

type _RTL_CRITICAL_SECTION_DEBUG = struct {
	Type                      WORD
	CreatorBackTraceIndex     WORD
	CriticalSection           uintptr
	ProcessLocksList          LIST_ENTRY
	EntryCount                DWORD
	ContentionCount           DWORD
	Flags                     DWORD
	CreatorBackTraceIndexHigh WORD
	SpareWORD                 WORD
} /* winnt.h:7947:13 */

type _RTL_CRITICAL_SECTION = struct {
	DebugInfo      PRTL_CRITICAL_SECTION_DEBUG
	LockCount      LONG
	RecursionCount LONG
	OwningThread   HANDLE
	LockSemaphore  HANDLE
	SpinCount      ULONG_PTR
} /* winnt.h:7947:13 */

type RTL_CRITICAL_SECTION_DEBUG = _RTL_CRITICAL_SECTION_DEBUG /* winnt.h:7957:7 */
type PRTL_CRITICAL_SECTION_DEBUG = uintptr                    /* winnt.h:7957:34 */
type RTL_RESOURCE_DEBUG = _RTL_CRITICAL_SECTION_DEBUG         /* winnt.h:7957:63 */
type PRTL_RESOURCE_DEBUG = uintptr                            /* winnt.h:7957:82 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type RTL_CRITICAL_SECTION = _RTL_CRITICAL_SECTION /* winnt.h:7981:7 */
type PRTL_CRITICAL_SECTION = uintptr              /* winnt.h:7981:28 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _RTL_SRWLOCK = struct{ Ptr PVOID } /* winnt.h:7984:13 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RTL_SRWLOCK = _RTL_SRWLOCK                    /* winnt.h:7984:48 */
type PRTL_SRWLOCK = uintptr                        /* winnt.h:7984:60 */
type _RTL_CONDITION_VARIABLE = struct{ Ptr PVOID } /* winnt.h:7985:13 */

type RTL_CONDITION_VARIABLE = _RTL_CONDITION_VARIABLE /* winnt.h:7985:59 */
type PRTL_CONDITION_VARIABLE = uintptr                /* winnt.h:7985:82 */

type PAPCFUNC = uintptr                    /* winnt.h:7992:18 */
type PVECTORED_EXCEPTION_HANDLER = uintptr /* winnt.h:7993:18 */

type HEAP_INFORMATION_CLASS = uint32 /* winnt.h:7998:7 */

type WORKERCALLBACKFUNC = uintptr                  /* winnt.h:8000:18 */
type APC_CALLBACK_FUNCTION = uintptr               /* winnt.h:8001:18 */
type WAITORTIMERCALLBACKFUNC = uintptr             /* winnt.h:8002:18 */
type WAITORTIMERCALLBACK = WAITORTIMERCALLBACKFUNC /* winnt.h:8003:37 */
type PFLS_CALLBACK_FUNCTION = uintptr              /* winnt.h:8004:18 */
type PSECURE_MEMORY_CACHE_CALLBACK = uintptr       /* winnt.h:8005:21 */

type ACTIVATION_CONTEXT_INFO_CLASS = uint32 /* winnt.h:8034:7 */

type ACTCTX_REQUESTED_RUN_LEVEL = uint32 /* winnt.h:8042:7 */

type ACTCTX_COMPATIBILITY_ELEMENT_TYPE = uint32 /* winnt.h:8048:7 */

type _ACTIVATION_CONTEXT_QUERY_INDEX = struct {
	ulAssemblyIndex       DWORD
	ulFileIndexInAssembly DWORD
} /* winnt.h:8050:13 */

type ACTIVATION_CONTEXT_QUERY_INDEX = _ACTIVATION_CONTEXT_QUERY_INDEX /* winnt.h:8053:7 */
type PACTIVATION_CONTEXT_QUERY_INDEX = uintptr                        /* winnt.h:8053:38 */

type _ASSEMBLY_FILE_DETAILED_INFORMATION = struct {
	ulFlags          DWORD
	ulFilenameLength DWORD
	ulPathLength     DWORD
	lpFileName       PCWSTR
	lpFilePath       PCWSTR
} /* winnt.h:8055:13 */

type ASSEMBLY_FILE_DETAILED_INFORMATION = _ASSEMBLY_FILE_DETAILED_INFORMATION /* winnt.h:8061:7 */
type PASSEMBLY_FILE_DETAILED_INFORMATION = uintptr                            /* winnt.h:8061:42 */

type _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = struct {
	ulFlags                           DWORD
	ulEncodedAssemblyIdentityLength   DWORD
	ulManifestPathType                DWORD
	ulManifestPathLength              DWORD
	liManifestLastWriteTime           LARGE_INTEGER
	ulPolicyPathType                  DWORD
	ulPolicyPathLength                DWORD
	liPolicyLastWriteTime             LARGE_INTEGER
	ulMetadataSatelliteRosterIndex    DWORD
	ulManifestVersionMajor            DWORD
	ulManifestVersionMinor            DWORD
	ulPolicyVersionMajor              DWORD
	ulPolicyVersionMinor              DWORD
	ulAssemblyDirectoryNameLength     DWORD
	lpAssemblyEncodedAssemblyIdentity PCWSTR
	lpAssemblyManifestPath            PCWSTR
	lpAssemblyPolicyPath              PCWSTR
	lpAssemblyDirectoryName           PCWSTR
	ulFileCount                       DWORD
	_                                 [4]byte
} /* winnt.h:8063:13 */

type ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION /* winnt.h:8083:7 */
type PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = uintptr                                          /* winnt.h:8083:56 */

type _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION = struct {
	ulFlags  DWORD
	RunLevel ACTCTX_REQUESTED_RUN_LEVEL
	UiAccess DWORD
} /* winnt.h:8085:13 */

type ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION = _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION /* winnt.h:8089:7 */
type PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION = uintptr                                  /* winnt.h:8089:48 */

type _COMPATIBILITY_CONTEXT_ELEMENT = struct {
	Id   GUID
	Type ACTCTX_COMPATIBILITY_ELEMENT_TYPE
} /* winnt.h:8091:13 */

type COMPATIBILITY_CONTEXT_ELEMENT = _COMPATIBILITY_CONTEXT_ELEMENT /* winnt.h:8094:7 */
type PCOMPATIBILITY_CONTEXT_ELEMENT = uintptr                       /* winnt.h:8094:37 */

//Vista: {e2011457-1546-43c5-a5fe-008deee3d3f0}
//Seven: {35138b9a-5d96-4fbd-8e2d-a2440225f93a}
type _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION = struct {
	_            [0]uint32
	ElementCount DWORD
} /* winnt.h:8098:13 */

//Vista: {e2011457-1546-43c5-a5fe-008deee3d3f0}
//Seven: {35138b9a-5d96-4fbd-8e2d-a2440225f93a}
type ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION = _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION /* winnt.h:8101:7 */
type PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION = uintptr                                      /* winnt.h:8101:52 */

type _SUPPORTED_OS_INFO = struct {
	OsCount         WORD
	MitigationExist WORD
	OsList          [4]WORD
} /* winnt.h:8105:13 */

type SUPPORTED_OS_INFO = _SUPPORTED_OS_INFO /* winnt.h:8109:7 */
type PSUPPORTED_OS_INFO = uintptr           /* winnt.h:8109:25 */

type _ACTIVATION_CONTEXT_DETAILED_INFORMATION = struct {
	dwFlags                      DWORD
	ulFormatVersion              DWORD
	ulAssemblyCount              DWORD
	ulRootManifestPathType       DWORD
	ulRootManifestPathChars      DWORD
	ulRootConfigurationPathType  DWORD
	ulRootConfigurationPathChars DWORD
	ulAppDirPathType             DWORD
	ulAppDirPathChars            DWORD
	lpRootManifestPath           PCWSTR
	lpRootConfigurationPath      PCWSTR
	lpAppDirPath                 PCWSTR
} /* winnt.h:8111:13 */

type ACTIVATION_CONTEXT_DETAILED_INFORMATION = _ACTIVATION_CONTEXT_DETAILED_INFORMATION /* winnt.h:8124:7 */
type PACTIVATION_CONTEXT_DETAILED_INFORMATION = uintptr                                 /* winnt.h:8124:47 */

type PCACTIVATION_CONTEXT_QUERY_INDEX = uintptr                   /* winnt.h:8126:58 */
type PCASSEMBLY_FILE_DETAILED_INFORMATION = uintptr               /* winnt.h:8127:54 */
type PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION = uintptr /* winnt.h:8128:76 */
type PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION = uintptr         /* winnt.h:8129:68 */
type PCCOMPATIBILITY_CONTEXT_ELEMENT = uintptr                    /* winnt.h:8130:57 */
type PCACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION = uintptr     /* winnt.h:8131:72 */
type PCACTIVATION_CONTEXT_DETAILED_INFORMATION = uintptr          /* winnt.h:8132:67 */

type RTL_VERIFIER_DLL_LOAD_CALLBACK = uintptr      /* winnt.h:8149:18 */
type RTL_VERIFIER_DLL_UNLOAD_CALLBACK = uintptr    /* winnt.h:8150:18 */
type RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK = uintptr /* winnt.h:8151:18 */

type _RTL_VERIFIER_THUNK_DESCRIPTOR = struct {
	ThunkName       PCHAR
	ThunkOldAddress PVOID
	ThunkNewAddress PVOID
} /* winnt.h:8153:13 */

type RTL_VERIFIER_THUNK_DESCRIPTOR = _RTL_VERIFIER_THUNK_DESCRIPTOR /* winnt.h:8157:7 */
type PRTL_VERIFIER_THUNK_DESCRIPTOR = uintptr                       /* winnt.h:8157:37 */

type _RTL_VERIFIER_DLL_DESCRIPTOR = struct {
	DllName    PWCHAR
	DllFlags   DWORD
	DllAddress PVOID
	DllThunks  PRTL_VERIFIER_THUNK_DESCRIPTOR
} /* winnt.h:8159:13 */

type RTL_VERIFIER_DLL_DESCRIPTOR = _RTL_VERIFIER_DLL_DESCRIPTOR /* winnt.h:8164:7 */
type PRTL_VERIFIER_DLL_DESCRIPTOR = uintptr                     /* winnt.h:8164:35 */

type _RTL_VERIFIER_PROVIDER_DESCRIPTOR = struct {
	Length                        DWORD
	ProviderDlls                  PRTL_VERIFIER_DLL_DESCRIPTOR
	ProviderDllLoadCallback       RTL_VERIFIER_DLL_LOAD_CALLBACK
	ProviderDllUnloadCallback     RTL_VERIFIER_DLL_UNLOAD_CALLBACK
	VerifierImage                 PWSTR
	VerifierFlags                 DWORD
	VerifierDebug                 DWORD
	RtlpGetStackTraceAddress      PVOID
	RtlpDebugPageHeapCreate       PVOID
	RtlpDebugPageHeapDestroy      PVOID
	ProviderNtdllHeapFreeCallback RTL_VERIFIER_NTDLLHEAPFREE_CALLBACK
} /* winnt.h:8166:13 */

type RTL_VERIFIER_PROVIDER_DESCRIPTOR = _RTL_VERIFIER_PROVIDER_DESCRIPTOR /* winnt.h:8178:7 */
type PRTL_VERIFIER_PROVIDER_DESCRIPTOR = uintptr                          /* winnt.h:8178:40 */

type _HARDWARE_COUNTER_DATA = struct {
	Type     HARDWARE_COUNTER_TYPE
	Reserved DWORD
	Value    DWORD64
} /* winnt.h:8291:13 */

type HARDWARE_COUNTER_DATA = _HARDWARE_COUNTER_DATA /* winnt.h:8295:7 */
type PHARDWARE_COUNTER_DATA = uintptr               /* winnt.h:8295:29 */

type _PERFORMANCE_DATA = struct {
	Size               WORD
	Version            BYTE
	HwCountersCount    BYTE
	ContextSwitchCount DWORD
	WaitReasonBitMap   DWORD64
	CycleTime          DWORD64
	RetryCount         DWORD
	Reserved           DWORD
	HwCounters         [16]HARDWARE_COUNTER_DATA
} /* winnt.h:8297:13 */

type PERFORMANCE_DATA = _PERFORMANCE_DATA /* winnt.h:8307:7 */
type PPERFORMANCE_DATA = uintptr          /* winnt.h:8307:24 */

type _EVENTLOGRECORD = struct {
	Length              DWORD
	Reserved            DWORD
	RecordNumber        DWORD
	TimeGenerated       DWORD
	TimeWritten         DWORD
	EventID             DWORD
	EventType           WORD
	NumStrings          WORD
	EventCategory       WORD
	ReservedFlags       WORD
	ClosingRecordNumber DWORD
	StringOffset        DWORD
	UserSidLength       DWORD
	UserSidOffset       DWORD
	DataLength          DWORD
	DataOffset          DWORD
} /* winnt.h:8338:13 */

type EVENTLOGRECORD = _EVENTLOGRECORD /* winnt.h:8355:7 */
type PEVENTLOGRECORD = uintptr        /* winnt.h:8355:22 */

type _EVENTSFORLOGFILE = struct {
	_                [0]uint32
	ulSize           DWORD
	szLogicalLogFile [256]WCHAR
	ulNumRecords     DWORD
} /* winnt.h:8359:13 */

type EVENTSFORLOGFILE = _EVENTSFORLOGFILE /* winnt.h:8364:7 */
type PEVENTSFORLOGFILE = uintptr          /* winnt.h:8364:24 */

type _PACKEDEVENTINFO = struct {
	_                     [0]uint32
	ulSize                DWORD
	ulNumEventsForLogFile DWORD
} /* winnt.h:8366:13 */

type PACKEDEVENTINFO = _PACKEDEVENTINFO /* winnt.h:8370:7 */
type PPACKEDEVENTINFO = uintptr         /* winnt.h:8370:23 */

type SERVICE_NODE_TYPE = uint32 /* winnt.h:8468:7 */

type SERVICE_LOAD_TYPE = uint32 /* winnt.h:8473:7 */

type SERVICE_ERROR_TYPE = uint32 /* winnt.h:8477:7 */

type _TAPE_ERASE = struct {
	Type      DWORD
	Immediate BOOLEAN
	_         [3]byte
} /* winnt.h:8496:13 */

type TAPE_ERASE = _TAPE_ERASE /* winnt.h:8499:7 */
type PTAPE_ERASE = uintptr    /* winnt.h:8499:18 */

type _TAPE_PREPARE = struct {
	Operation DWORD
	Immediate BOOLEAN
	_         [3]byte
} /* winnt.h:8508:13 */

type TAPE_PREPARE = _TAPE_PREPARE /* winnt.h:8511:7 */
type PTAPE_PREPARE = uintptr      /* winnt.h:8511:20 */

type _TAPE_WRITE_MARKS = struct {
	Type      DWORD
	Count     DWORD
	Immediate BOOLEAN
	_         [3]byte
} /* winnt.h:8518:13 */

type TAPE_WRITE_MARKS = _TAPE_WRITE_MARKS /* winnt.h:8522:7 */
type PTAPE_WRITE_MARKS = uintptr          /* winnt.h:8522:24 */

type _TAPE_GET_POSITION = struct {
	Type      DWORD
	Partition DWORD
	Offset    LARGE_INTEGER
} /* winnt.h:8528:13 */

type TAPE_GET_POSITION = _TAPE_GET_POSITION /* winnt.h:8532:7 */
type PTAPE_GET_POSITION = uintptr           /* winnt.h:8532:25 */

type _TAPE_SET_POSITION = struct {
	Method    DWORD
	Partition DWORD
	Offset    LARGE_INTEGER
	Immediate BOOLEAN
	_         [7]byte
} /* winnt.h:8545:13 */

type TAPE_SET_POSITION = _TAPE_SET_POSITION /* winnt.h:8550:7 */
type PTAPE_SET_POSITION = uintptr           /* winnt.h:8550:25 */

type _TAPE_GET_DRIVE_PARAMETERS = struct {
	ECC                   BOOLEAN
	Compression           BOOLEAN
	DataPadding           BOOLEAN
	ReportSetmarks        BOOLEAN
	DefaultBlockSize      DWORD
	MaximumBlockSize      DWORD
	MinimumBlockSize      DWORD
	MaximumPartitionCount DWORD
	FeaturesLow           DWORD
	FeaturesHigh          DWORD
	EOTWarningZoneSize    DWORD
} /* winnt.h:8619:13 */

type TAPE_GET_DRIVE_PARAMETERS = _TAPE_GET_DRIVE_PARAMETERS /* winnt.h:8631:7 */
type PTAPE_GET_DRIVE_PARAMETERS = uintptr                   /* winnt.h:8631:33 */

type _TAPE_SET_DRIVE_PARAMETERS = struct {
	ECC                BOOLEAN
	Compression        BOOLEAN
	DataPadding        BOOLEAN
	ReportSetmarks     BOOLEAN
	EOTWarningZoneSize DWORD
} /* winnt.h:8633:13 */

type TAPE_SET_DRIVE_PARAMETERS = _TAPE_SET_DRIVE_PARAMETERS /* winnt.h:8639:7 */
type PTAPE_SET_DRIVE_PARAMETERS = uintptr                   /* winnt.h:8639:33 */

type _TAPE_GET_MEDIA_PARAMETERS = struct {
	Capacity       LARGE_INTEGER
	Remaining      LARGE_INTEGER
	BlockSize      DWORD
	PartitionCount DWORD
	WriteProtected BOOLEAN
	_              [7]byte
} /* winnt.h:8641:13 */

type TAPE_GET_MEDIA_PARAMETERS = _TAPE_GET_MEDIA_PARAMETERS /* winnt.h:8647:7 */
type PTAPE_GET_MEDIA_PARAMETERS = uintptr                   /* winnt.h:8647:33 */

type _TAPE_SET_MEDIA_PARAMETERS = struct{ BlockSize DWORD } /* winnt.h:8649:13 */

type TAPE_SET_MEDIA_PARAMETERS = _TAPE_SET_MEDIA_PARAMETERS /* winnt.h:8651:7 */
type PTAPE_SET_MEDIA_PARAMETERS = uintptr                   /* winnt.h:8651:33 */

type _TAPE_CREATE_PARTITION = struct {
	Method DWORD
	Count  DWORD
	Size   DWORD
} /* winnt.h:8657:13 */

type TAPE_CREATE_PARTITION = _TAPE_CREATE_PARTITION /* winnt.h:8661:7 */
type PTAPE_CREATE_PARTITION = uintptr               /* winnt.h:8661:29 */

type _TAPE_WMI_OPERATIONS = struct {
	Method         DWORD
	DataBufferSize DWORD
	DataBuffer     PVOID
} /* winnt.h:8669:13 */

type TAPE_WMI_OPERATIONS = _TAPE_WMI_OPERATIONS /* winnt.h:8673:7 */
type PTAPE_WMI_OPERATIONS = uintptr             /* winnt.h:8673:27 */

type TAPE_DRIVE_PROBLEM_TYPE = uint32 /* winnt.h:8677:7 */

type TP_VERSION = DWORD              /* winnt.h:8680:17 */
type PTP_VERSION = uintptr           /* winnt.h:8680:28 */
type PTP_CALLBACK_INSTANCE = uintptr /* winnt.h:8681:61 */
type PTP_SIMPLE_CALLBACK = uintptr   /* winnt.h:8682:16 */
type PTP_POOL = uintptr              /* winnt.h:8683:35 */

type TP_CALLBACK_PRIORITY = uint32 /* winnt.h:8691:5 */

type _TP_POOL_STACK_INFORMATION = struct {
	StackReserve SIZE_T
	StackCommit  SIZE_T
} /* winnt.h:8693:11 */

type TP_POOL_STACK_INFORMATION = _TP_POOL_STACK_INFORMATION /* winnt.h:8696:5 */
type PTP_POOL_STACK_INFORMATION = uintptr                   /* winnt.h:8696:32 */
type PTP_CLEANUP_GROUP = uintptr                            /* winnt.h:8698:53 */
type PTP_CLEANUP_GROUP_CANCEL_CALLBACK = uintptr            /* winnt.h:8699:16 */

type _TP_CALLBACK_ENVIRON_V1 = struct {
	Version                    TP_VERSION
	Pool                       PTP_POOL
	CleanupGroup               PTP_CLEANUP_GROUP
	CleanupGroupCancelCallback PTP_CLEANUP_GROUP_CANCEL_CALLBACK
	RaceDll                    PVOID
	ActivationContext          uintptr
	FinalizationCallback       PTP_SIMPLE_CALLBACK
	u                          struct{ Flags DWORD }
} /* winnt.h:8723:11 */

type TP_CALLBACK_ENVIRON_V1 = _TP_CALLBACK_ENVIRON_V1 /* winnt.h:8739:5 */
type TP_CALLBACK_ENVIRON = TP_CALLBACK_ENVIRON_V1     /* winnt.h:8740:34 */
type PTP_CALLBACK_ENVIRON = uintptr                   /* winnt.h:8740:54 */
type PTP_WORK = uintptr                               /* winnt.h:8743:35 */
type PTP_WORK_CALLBACK = uintptr                      /* winnt.h:8744:16 */
type PTP_TIMER = uintptr                              /* winnt.h:8745:37 */
type PTP_TIMER_CALLBACK = uintptr                     /* winnt.h:8746:16 */
type TP_WAIT_RESULT = DWORD                           /* winnt.h:8747:17 */
type PTP_WAIT = uintptr                               /* winnt.h:8748:35 */
type PTP_WAIT_CALLBACK = uintptr                      /* winnt.h:8749:16 */
type PTP_IO = uintptr                                 /* winnt.h:8750:31 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type CRM_PROTOCOL_ID = GUID     /* ktmtypes.h:13:16 */
type PCRM_PROTOCOL_ID = uintptr /* ktmtypes.h:13:32 */

type NOTIFICATION_MASK = ULONG /* ktmtypes.h:38:17 */

type _TRANSACTION_NOTIFICATION = struct {
	TransactionKey          PVOID
	TransactionNotification ULONG
	TmVirtualClock          LARGE_INTEGER
	ArgumentLength          ULONG
	_                       [4]byte
} /* ktmtypes.h:78:11 */

type TRANSACTION_NOTIFICATION = _TRANSACTION_NOTIFICATION /* ktmtypes.h:83:5 */
type PTRANSACTION_NOTIFICATION = uintptr                  /* ktmtypes.h:83:30 */

type _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT = struct {
	EnlistmentId GUID
	UOW          GUID
} /* ktmtypes.h:85:11 */

type TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT = _TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT /* ktmtypes.h:88:5 */
type PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT = uintptr                                    /* ktmtypes.h:88:48 */

type _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT = struct {
	TmIdentity GUID
	Flags      ULONG
} /* ktmtypes.h:92:11 */

type TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT = _TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT /* ktmtypes.h:95:5 */
type PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT = uintptr                                     /* ktmtypes.h:95:49 */

type SAVEPOINT_ID = ULONG    /* ktmtypes.h:97:17 */
type PSAVEPOINT_ID = uintptr /* ktmtypes.h:97:30 */

type _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT = struct{ SavepointId SAVEPOINT_ID } /* ktmtypes.h:99:11 */

type TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT = _TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT /* ktmtypes.h:101:5 */
type PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT = uintptr                                     /* ktmtypes.h:101:49 */

type _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT = struct {
	PropagationCookie ULONG
	UOW               GUID
	TmIdentity        GUID
	BufferLength      ULONG
} /* ktmtypes.h:103:11 */

type TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT = _TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT /* ktmtypes.h:108:5 */
type PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT = uintptr                                     /* ktmtypes.h:108:49 */

type _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT = struct {
	MarshalCookie ULONG
	UOW           GUID
} /* ktmtypes.h:110:11 */

type TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT = _TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT /* ktmtypes.h:113:5 */
type PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT = uintptr                                   /* ktmtypes.h:113:47 */

type TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT = TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT /* ktmtypes.h:115:55 */
type PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT = uintptr                                    /* ktmtypes.h:115:97 */

type _KCRM_MARSHAL_HEADER = struct {
	VersionMajor ULONG
	VersionMinor ULONG
	NumProtocols ULONG
	Unused       ULONG
} /* ktmtypes.h:123:11 */

type KCRM_MARSHAL_HEADER = _KCRM_MARSHAL_HEADER /* ktmtypes.h:128:5 */
type PKCRM_MARSHAL_HEADER = uintptr             /* ktmtypes.h:128:25 */
type PRKCRM_MARSHAL_HEADER = uintptr            /* ktmtypes.h:128:47 */

type _KCRM_TRANSACTION_BLOB = struct {
	UOW            GUID
	TmIdentity     GUID
	IsolationLevel ULONG
	IsolationFlags ULONG
	Timeout        ULONG
	Description    [64]WCHAR
} /* ktmtypes.h:130:11 */

type KCRM_TRANSACTION_BLOB = _KCRM_TRANSACTION_BLOB /* ktmtypes.h:137:5 */
type PKCRM_TRANSACTION_BLOB = uintptr               /* ktmtypes.h:137:27 */
type PRKCRM_TRANSACTION_BLOB = uintptr              /* ktmtypes.h:137:51 */

type _KCRM_PROTOCOL_BLOB = struct {
	ProtocolId              CRM_PROTOCOL_ID
	StaticInfoLength        ULONG
	TransactionIdInfoLength ULONG
	Unused1                 ULONG
	Unused2                 ULONG
} /* ktmtypes.h:139:11 */

type KCRM_PROTOCOL_BLOB = _KCRM_PROTOCOL_BLOB /* ktmtypes.h:145:5 */
type PKCRM_PROTOCOL_BLOB = uintptr            /* ktmtypes.h:145:24 */
type PRKCRM_PROTOCOL_BLOB = uintptr           /* ktmtypes.h:145:45 */

type TRANSACTION_OUTCOME = uint32 /* winnt.h:8882:9 */

type TRANSACTION_STATE = uint32 /* winnt.h:8888:9 */

type _TRANSACTION_BASIC_INFORMATION = struct {
	TransactionId GUID
	State         DWORD
	Outcome       DWORD
} /* winnt.h:8890:15 */

type TRANSACTION_BASIC_INFORMATION = _TRANSACTION_BASIC_INFORMATION /* winnt.h:8894:9 */
type PTRANSACTION_BASIC_INFORMATION = uintptr                       /* winnt.h:8894:39 */

type _TRANSACTIONMANAGER_BASIC_INFORMATION = struct {
	TmIdentity   GUID
	VirtualClock LARGE_INTEGER
} /* winnt.h:8896:15 */

type TRANSACTIONMANAGER_BASIC_INFORMATION = _TRANSACTIONMANAGER_BASIC_INFORMATION /* winnt.h:8899:9 */
type PTRANSACTIONMANAGER_BASIC_INFORMATION = uintptr                              /* winnt.h:8899:46 */

type _TRANSACTIONMANAGER_LOG_INFORMATION = struct{ LogIdentity GUID } /* winnt.h:8901:15 */

type TRANSACTIONMANAGER_LOG_INFORMATION = _TRANSACTIONMANAGER_LOG_INFORMATION /* winnt.h:8903:9 */
type PTRANSACTIONMANAGER_LOG_INFORMATION = uintptr                            /* winnt.h:8903:44 */

type _TRANSACTIONMANAGER_LOGPATH_INFORMATION = struct {
	LogPathLength DWORD
	LogPath       [1]WCHAR
	_             [2]byte
} /* winnt.h:8905:15 */

type TRANSACTIONMANAGER_LOGPATH_INFORMATION = _TRANSACTIONMANAGER_LOGPATH_INFORMATION /* winnt.h:8908:9 */
type PTRANSACTIONMANAGER_LOGPATH_INFORMATION = uintptr                                /* winnt.h:8908:48 */

type _TRANSACTIONMANAGER_RECOVERY_INFORMATION = struct{ LastRecoveredLsn ULONGLONG } /* winnt.h:8910:15 */

type TRANSACTIONMANAGER_RECOVERY_INFORMATION = _TRANSACTIONMANAGER_RECOVERY_INFORMATION /* winnt.h:8912:9 */
type PTRANSACTIONMANAGER_RECOVERY_INFORMATION = uintptr                                 /* winnt.h:8912:49 */

type _TRANSACTIONMANAGER_OLDEST_INFORMATION = struct{ OldestTransactionGuid GUID } /* winnt.h:8914:15 */

type TRANSACTIONMANAGER_OLDEST_INFORMATION = _TRANSACTIONMANAGER_OLDEST_INFORMATION /* winnt.h:8916:9 */
type PTRANSACTIONMANAGER_OLDEST_INFORMATION = uintptr                               /* winnt.h:8916:47 */

type _TRANSACTION_PROPERTIES_INFORMATION = struct {
	IsolationLevel    DWORD
	IsolationFlags    DWORD
	Timeout           LARGE_INTEGER
	Outcome           DWORD
	DescriptionLength DWORD
	Description       [1]WCHAR
	_                 [6]byte
} /* winnt.h:8918:15 */

type TRANSACTION_PROPERTIES_INFORMATION = _TRANSACTION_PROPERTIES_INFORMATION /* winnt.h:8925:9 */
type PTRANSACTION_PROPERTIES_INFORMATION = uintptr                            /* winnt.h:8925:44 */

type _TRANSACTION_BIND_INFORMATION = struct{ TmHandle HANDLE } /* winnt.h:8927:15 */

type TRANSACTION_BIND_INFORMATION = _TRANSACTION_BIND_INFORMATION /* winnt.h:8929:9 */
type PTRANSACTION_BIND_INFORMATION = uintptr                      /* winnt.h:8929:38 */

type _TRANSACTION_ENLISTMENT_PAIR = struct {
	EnlistmentId      GUID
	ResourceManagerId GUID
} /* winnt.h:8931:15 */

type TRANSACTION_ENLISTMENT_PAIR = _TRANSACTION_ENLISTMENT_PAIR /* winnt.h:8934:9 */
type PTRANSACTION_ENLISTMENT_PAIR = uintptr                     /* winnt.h:8934:37 */

type _TRANSACTION_ENLISTMENTS_INFORMATION = struct {
	NumberOfEnlistments DWORD
	EnlistmentPair      [1]TRANSACTION_ENLISTMENT_PAIR
} /* winnt.h:8936:15 */

type TRANSACTION_ENLISTMENTS_INFORMATION = _TRANSACTION_ENLISTMENTS_INFORMATION /* winnt.h:8939:9 */
type PTRANSACTION_ENLISTMENTS_INFORMATION = uintptr                             /* winnt.h:8939:45 */

type _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION = struct{ SuperiorEnlistmentPair TRANSACTION_ENLISTMENT_PAIR } /* winnt.h:8941:15 */

type TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION = _TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION /* winnt.h:8943:9 */
type PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION = uintptr                                     /* winnt.h:8943:53 */

type _RESOURCEMANAGER_BASIC_INFORMATION = struct {
	ResourceManagerId GUID
	DescriptionLength DWORD
	Description       [1]WCHAR
	_                 [2]byte
} /* winnt.h:8945:15 */

type RESOURCEMANAGER_BASIC_INFORMATION = _RESOURCEMANAGER_BASIC_INFORMATION /* winnt.h:8949:9 */
type PRESOURCEMANAGER_BASIC_INFORMATION = uintptr                           /* winnt.h:8949:43 */

type _RESOURCEMANAGER_COMPLETION_INFORMATION = struct {
	IoCompletionPortHandle HANDLE
	CompletionKey          ULONG_PTR
} /* winnt.h:8951:15 */

type RESOURCEMANAGER_COMPLETION_INFORMATION = _RESOURCEMANAGER_COMPLETION_INFORMATION /* winnt.h:8954:9 */
type PRESOURCEMANAGER_COMPLETION_INFORMATION = uintptr                                /* winnt.h:8954:48 */

type TRANSACTION_INFORMATION_CLASS = uint32 /* winnt.h:8963:9 */

type TRANSACTIONMANAGER_INFORMATION_CLASS = uint32 /* winnt.h:8972:9 */

type RESOURCEMANAGER_INFORMATION_CLASS = uint32 /* winnt.h:8977:9 */

type _ENLISTMENT_BASIC_INFORMATION = struct {
	EnlistmentId      GUID
	TransactionId     GUID
	ResourceManagerId GUID
} /* winnt.h:8979:15 */

type ENLISTMENT_BASIC_INFORMATION = _ENLISTMENT_BASIC_INFORMATION /* winnt.h:8983:9 */
type PENLISTMENT_BASIC_INFORMATION = uintptr                      /* winnt.h:8983:38 */

type _ENLISTMENT_CRM_INFORMATION = struct {
	CrmTransactionManagerId GUID
	CrmResourceManagerId    GUID
	CrmEnlistmentId         GUID
} /* winnt.h:8985:15 */

type ENLISTMENT_CRM_INFORMATION = _ENLISTMENT_CRM_INFORMATION /* winnt.h:8989:9 */
type PENLISTMENT_CRM_INFORMATION = uintptr                    /* winnt.h:8989:36 */

type ENLISTMENT_INFORMATION_CLASS = uint32 /* winnt.h:8995:9 */

type _TRANSACTION_LIST_ENTRY = struct{ UOW GUID } /* winnt.h:8997:15 */

type TRANSACTION_LIST_ENTRY = _TRANSACTION_LIST_ENTRY /* winnt.h:8999:9 */
type PTRANSACTION_LIST_ENTRY = uintptr                /* winnt.h:8999:32 */

type _TRANSACTION_LIST_INFORMATION = struct {
	NumberOfTransactions   DWORD
	TransactionInformation [1]TRANSACTION_LIST_ENTRY
} /* winnt.h:9001:15 */

type TRANSACTION_LIST_INFORMATION = _TRANSACTION_LIST_INFORMATION /* winnt.h:9004:9 */
type PTRANSACTION_LIST_INFORMATION = uintptr                      /* winnt.h:9004:38 */

type KTMOBJECT_TYPE = uint32   /* winnt.h:9012:9 */
type PKTMOBJECT_TYPE = uintptr /* winnt.h:9012:24 */

type _KTMOBJECT_CURSOR = struct {
	LastQuery     GUID
	ObjectIdCount DWORD
	ObjectIds     [1]GUID
} /* winnt.h:9014:15 */

type KTMOBJECT_CURSOR = _KTMOBJECT_CURSOR /* winnt.h:9018:9 */
type PKTMOBJECT_CURSOR = uintptr          /* winnt.h:9018:26 */

// Field Names From (See _fields_ section)
// FIXME: Verify these against documentation
// -- These documentation describes Win32 Constants and Structures in Python --
// Constants - http://packages.python.org/winappdbg/winappdbg.win32.context_i386-pysrc.html
// WOW64_FLOATING_SAVE_AREA - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_FLOATING_SAVE_AREA-class.html
// WOW64_CONTEXT - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_CONTEXT-class.html

type _WOW64_FLOATING_SAVE_AREA = struct {
	ControlWord   DWORD
	StatusWord    DWORD
	TagWord       DWORD
	ErrorOffset   DWORD
	ErrorSelector DWORD
	DataOffset    DWORD
	DataSelector  DWORD
	RegisterArea  [80]BYTE
	Cr0NpxState   DWORD
} /* winnt.h:9055:9 */

// Field Names From (See _fields_ section)
// FIXME: Verify these against documentation
// -- These documentation describes Win32 Constants and Structures in Python --
// Constants - http://packages.python.org/winappdbg/winappdbg.win32.context_i386-pysrc.html
// WOW64_FLOATING_SAVE_AREA - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_FLOATING_SAVE_AREA-class.html
// WOW64_CONTEXT - http://packages.python.org/winappdbg/winappdbg.win32.context_amd64.WOW64_CONTEXT-class.html

type WOW64_FLOATING_SAVE_AREA = _WOW64_FLOATING_SAVE_AREA /* winnt.h:9065:3 */
type PWOW64_FLOATING_SAVE_AREA = uintptr                  /* winnt.h:9065:29 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type _WOW64_CONTEXT = struct {
	ContextFlags      DWORD
	Dr0               DWORD
	Dr1               DWORD
	Dr2               DWORD
	Dr3               DWORD
	Dr6               DWORD
	Dr7               DWORD
	FloatSave         WOW64_FLOATING_SAVE_AREA
	SegGs             DWORD
	SegFs             DWORD
	SegEs             DWORD
	SegDs             DWORD
	Edi               DWORD
	Esi               DWORD
	Ebx               DWORD
	Edx               DWORD
	Ecx               DWORD
	Eax               DWORD
	Ebp               DWORD
	Eip               DWORD
	SegCs             DWORD
	EFlags            DWORD
	Esp               DWORD
	SegSs             DWORD
	ExtendedRegisters [512]BYTE
} /* winnt.h:9068:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type WOW64_CONTEXT = _WOW64_CONTEXT /* winnt.h:9094:3 */
type PWOW64_CONTEXT = uintptr       /* winnt.h:9094:18 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _WOW64_LDT_ENTRY = struct {
	LimitLow WORD
	BaseLow  WORD
	HighWord struct {
		_     [0]uint32
		Bytes struct {
			BaseMid BYTE
			Flags1  BYTE
			Flags2  BYTE
			BaseHi  BYTE
		}
	}
} /* winnt.h:9097:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type WOW64_LDT_ENTRY = _WOW64_LDT_ENTRY /* winnt.h:9120:3 */
type PWOW64_LDT_ENTRY = uintptr         /* winnt.h:9120:20 */

type _WOW64_DESCRIPTOR_TABLE_ENTRY = struct {
	Selector   DWORD
	Descriptor WOW64_LDT_ENTRY
} /* winnt.h:9122:13 */

type WOW64_DESCRIPTOR_TABLE_ENTRY = _WOW64_DESCRIPTOR_TABLE_ENTRY /* winnt.h:9125:7 */
type PWOW64_DESCRIPTOR_TABLE_ENTRY = uintptr                      /* winnt.h:9125:36 */

type WPARAM = UINT_PTR  /* minwindef.h:166:20 */
type LPARAM = LONG_PTR  /* minwindef.h:167:20 */
type LRESULT = LONG_PTR /* minwindef.h:168:20 */

type SPHANDLE = uintptr    /* minwindef.h:189:18 */
type LPHANDLE = uintptr    /* minwindef.h:190:18 */
type HGLOBAL = HANDLE      /* minwindef.h:191:18 */
type HLOCAL = HANDLE       /* minwindef.h:192:18 */
type GLOBALHANDLE = HANDLE /* minwindef.h:193:18 */
type LOCALHANDLE = HANDLE  /* minwindef.h:194:18 */
type FARPROC = uintptr     /* minwindef.h:200:15 */
type NEARPROC = uintptr    /* minwindef.h:201:15 */
type PROC = uintptr        /* minwindef.h:202:15 */

type ATOM = WORD /* minwindef.h:205:16 */

type HFILE = int32                        /* minwindef.h:207:15 */
type HINSTANCE__ = struct{ unused int32 } /* minwindef.h:208:3 */

type HINSTANCE = uintptr             /* minwindef.h:208:3 */
type HKEY__ = struct{ unused int32 } /* minwindef.h:209:3 */

type HKEY = uintptr                 /* minwindef.h:209:3 */
type PHKEY = uintptr                /* minwindef.h:210:16 */
type HKL__ = struct{ unused int32 } /* minwindef.h:211:3 */

type HKL = uintptr                     /* minwindef.h:211:3 */
type HLSURF__ = struct{ unused int32 } /* minwindef.h:212:3 */

type HLSURF = uintptr                     /* minwindef.h:212:3 */
type HMETAFILE__ = struct{ unused int32 } /* minwindef.h:213:3 */

type HMETAFILE = uintptr             /* minwindef.h:213:3 */
type HMODULE = HINSTANCE             /* minwindef.h:214:21 */
type HRGN__ = struct{ unused int32 } /* minwindef.h:215:3 */

type HRGN = uintptr                   /* minwindef.h:215:3 */
type HRSRC__ = struct{ unused int32 } /* minwindef.h:216:3 */

type HRSRC = uintptr                    /* minwindef.h:216:3 */
type HSPRITE__ = struct{ unused int32 } /* minwindef.h:217:3 */

type HSPRITE = uintptr               /* minwindef.h:217:3 */
type HSTR__ = struct{ unused int32 } /* minwindef.h:218:3 */

type HSTR = uintptr                   /* minwindef.h:218:3 */
type HTASK__ = struct{ unused int32 } /* minwindef.h:219:3 */

type HTASK = uintptr                    /* minwindef.h:219:3 */
type HWINSTA__ = struct{ unused int32 } /* minwindef.h:220:3 */

type HWINSTA = uintptr /* minwindef.h:220:3 */

type _FILETIME = struct {
	dwLowDateTime  DWORD
	dwHighDateTime DWORD
} /* minwindef.h:222:11 */

type FILETIME = _FILETIME /* minwindef.h:225:5 */
type PFILETIME = uintptr  /* minwindef.h:225:14 */
type LPFILETIME = uintptr /* minwindef.h:225:25 */

// Make sure winnt.h is included.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type HWND__ = struct{ unused int32 } /* windef.h:25:1 */

type HWND = uintptr                   /* windef.h:25:1 */
type HHOOK__ = struct{ unused int32 } /* windef.h:26:1 */

type HHOOK = uintptr /* windef.h:26:1 */

type HGDIOBJ = uintptr /* windef.h:37:16 */

type HACCEL__ = struct{ unused int32 } /* windef.h:42:1 */

type HACCEL = uintptr                   /* windef.h:42:1 */
type HBITMAP__ = struct{ unused int32 } /* windef.h:43:1 */

type HBITMAP = uintptr                 /* windef.h:43:1 */
type HBRUSH__ = struct{ unused int32 } /* windef.h:44:1 */

type HBRUSH = uintptr                       /* windef.h:44:1 */
type HCOLORSPACE__ = struct{ unused int32 } /* windef.h:45:1 */

type HCOLORSPACE = uintptr          /* windef.h:45:1 */
type HDC__ = struct{ unused int32 } /* windef.h:46:1 */

type HDC = uintptr                    /* windef.h:46:1 */
type HGLRC__ = struct{ unused int32 } /* windef.h:47:1 */

type HGLRC = uintptr                  /* windef.h:47:1 */
type HDESK__ = struct{ unused int32 } /* windef.h:48:1 */

type HDESK = uintptr                         /* windef.h:48:1 */
type HENHMETAFILE__ = struct{ unused int32 } /* windef.h:49:1 */

type HENHMETAFILE = uintptr           /* windef.h:49:1 */
type HFONT__ = struct{ unused int32 } /* windef.h:50:1 */

type HFONT = uintptr                  /* windef.h:50:1 */
type HICON__ = struct{ unused int32 } /* windef.h:51:1 */

type HICON = uintptr                  /* windef.h:51:1 */
type HMENU__ = struct{ unused int32 } /* windef.h:52:1 */

type HMENU = uintptr                     /* windef.h:52:1 */
type HPALETTE__ = struct{ unused int32 } /* windef.h:53:1 */

type HPALETTE = uintptr              /* windef.h:53:1 */
type HPEN__ = struct{ unused int32 } /* windef.h:54:1 */

type HPEN = uintptr                      /* windef.h:54:1 */
type HMONITOR__ = struct{ unused int32 } /* windef.h:55:1 */

type HMONITOR = uintptr                       /* windef.h:55:1 */
type HWINEVENTHOOK__ = struct{ unused int32 } /* windef.h:57:1 */

type HWINEVENTHOOK = uintptr /* windef.h:57:1 */

type HCURSOR = HICON  /* windef.h:59:15 */
type COLORREF = DWORD /* windef.h:60:15 */

type HUMPD__ = struct{ unused int32 } /* windef.h:64:1 */

type HUMPD = uintptr /* windef.h:64:1 */

type LPCOLORREF = uintptr /* windef.h:66:15 */

type tagRECT = struct {
	left   LONG
	top    LONG
	right  LONG
	bottom LONG
} /* windef.h:72:9 */

type RECT = tagRECT   /* windef.h:77:3 */
type PRECT = uintptr  /* windef.h:77:8 */
type NPRECT = uintptr /* windef.h:77:15 */
type LPRECT = uintptr /* windef.h:77:23 */

type LPCRECT = uintptr /* windef.h:79:20 */

type _RECTL = struct {
	left   LONG
	top    LONG
	right  LONG
	bottom LONG
} /* windef.h:81:9 */

type RECTL = _RECTL    /* windef.h:86:3 */
type PRECTL = uintptr  /* windef.h:86:9 */
type LPRECTL = uintptr /* windef.h:86:17 */

type LPCRECTL = uintptr /* windef.h:88:21 */

type tagPOINT = struct {
	x LONG
	y LONG
} /* windef.h:90:9 */

type POINT = tagPOINT  /* windef.h:93:3 */
type PPOINT = uintptr  /* windef.h:93:9 */
type NPPOINT = uintptr /* windef.h:93:17 */
type LPPOINT = uintptr /* windef.h:93:26 */

type _POINTL = struct {
	x LONG
	y LONG
} /* windef.h:95:9 */

type POINTL = _POINTL  /* windef.h:98:3 */
type PPOINTL = uintptr /* windef.h:98:10 */

type tagSIZE = struct {
	cx LONG
	cy LONG
} /* windef.h:100:9 */

type SIZE = tagSIZE   /* windef.h:103:3 */
type PSIZE = uintptr  /* windef.h:103:8 */
type LPSIZE = uintptr /* windef.h:103:15 */

type SIZEL = SIZE      /* windef.h:105:14 */
type PSIZEL = uintptr  /* windef.h:106:14 */
type LPSIZEL = uintptr /* windef.h:106:22 */

type tagPOINTS = struct {
	x SHORT
	y SHORT
} /* windef.h:108:9 */

type POINTS = tagPOINTS /* windef.h:111:3 */
type PPOINTS = uintptr  /* windef.h:111:10 */
type LPPOINTS = uintptr /* windef.h:111:19 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _SECURITY_ATTRIBUTES = struct {
	nLength              DWORD
	lpSecurityDescriptor LPVOID
	bInheritHandle       WINBOOL
} /* minwinbase.h:13:11 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type SECURITY_ATTRIBUTES = _SECURITY_ATTRIBUTES /* minwinbase.h:17:5 */
type PSECURITY_ATTRIBUTES = uintptr             /* minwinbase.h:17:26 */
type LPSECURITY_ATTRIBUTES = uintptr            /* minwinbase.h:17:49 */

type _OVERLAPPED = struct {
	Internal     ULONG_PTR
	InternalHigh ULONG_PTR
	__8          struct {
		__0 struct {
			Offset     DWORD
			OffsetHigh DWORD
		}
	}
	hEvent HANDLE
} /* minwinbase.h:19:11 */

type OVERLAPPED = _OVERLAPPED /* minwinbase.h:30:5 */
type LPOVERLAPPED = uintptr   /* minwinbase.h:30:17 */

type _OVERLAPPED_ENTRY = struct {
	lpCompletionKey            ULONG_PTR
	lpOverlapped               LPOVERLAPPED
	Internal                   ULONG_PTR
	dwNumberOfBytesTransferred DWORD
} /* minwinbase.h:32:11 */

type OVERLAPPED_ENTRY = _OVERLAPPED_ENTRY /* minwinbase.h:37:5 */
type LPOVERLAPPED_ENTRY = uintptr         /* minwinbase.h:37:23 */

type _SYSTEMTIME = struct {
	wYear         WORD
	wMonth        WORD
	wDayOfWeek    WORD
	wDay          WORD
	wHour         WORD
	wMinute       WORD
	wSecond       WORD
	wMilliseconds WORD
} /* minwinbase.h:49:11 */

type SYSTEMTIME = _SYSTEMTIME /* minwinbase.h:58:5 */
type PSYSTEMTIME = uintptr    /* minwinbase.h:58:17 */
type LPSYSTEMTIME = uintptr   /* minwinbase.h:58:31 */

type _WIN32_FIND_DATAA = struct {
	dwFileAttributes   DWORD
	ftCreationTime     FILETIME
	ftLastAccessTime   FILETIME
	ftLastWriteTime    FILETIME
	nFileSizeHigh      DWORD
	nFileSizeLow       DWORD
	dwReserved0        DWORD
	dwReserved1        DWORD
	cFileName          [260]CHAR
	cAlternateFileName [14]CHAR
	_                  [2]byte
} /* minwinbase.h:61:11 */

type WIN32_FIND_DATAA = _WIN32_FIND_DATAA /* minwinbase.h:72:5 */
type PWIN32_FIND_DATAA = uintptr          /* minwinbase.h:72:23 */
type LPWIN32_FIND_DATAA = uintptr         /* minwinbase.h:72:43 */

type _WIN32_FIND_DATAW = struct {
	dwFileAttributes   DWORD
	ftCreationTime     FILETIME
	ftLastAccessTime   FILETIME
	ftLastWriteTime    FILETIME
	nFileSizeHigh      DWORD
	nFileSizeLow       DWORD
	dwReserved0        DWORD
	dwReserved1        DWORD
	cFileName          [260]WCHAR
	cAlternateFileName [14]WCHAR
} /* minwinbase.h:74:11 */

type WIN32_FIND_DATAW = _WIN32_FIND_DATAW /* minwinbase.h:85:5 */
type PWIN32_FIND_DATAW = uintptr          /* minwinbase.h:85:23 */
type LPWIN32_FIND_DATAW = uintptr         /* minwinbase.h:85:43 */

type WIN32_FIND_DATA = WIN32_FIND_DATAW     /* minwinbase.h:87:3 */
type PWIN32_FIND_DATA = PWIN32_FIND_DATAW   /* minwinbase.h:88:3 */
type LPWIN32_FIND_DATA = LPWIN32_FIND_DATAW /* minwinbase.h:89:3 */

type FINDEX_INFO_LEVELS = uint32 /* minwinbase.h:95:5 */

type FINDEX_SEARCH_OPS = uint32 /* minwinbase.h:105:5 */

type GET_FILEEX_INFO_LEVELS = uint32 /* minwinbase.h:110:5 */

type CRITICAL_SECTION = RTL_CRITICAL_SECTION                /* minwinbase.h:141:32 */
type PCRITICAL_SECTION = PRTL_CRITICAL_SECTION              /* minwinbase.h:142:33 */
type LPCRITICAL_SECTION = PRTL_CRITICAL_SECTION             /* minwinbase.h:143:33 */
type CRITICAL_SECTION_DEBUG = RTL_CRITICAL_SECTION_DEBUG    /* minwinbase.h:144:38 */
type PCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG  /* minwinbase.h:145:39 */
type LPCRITICAL_SECTION_DEBUG = PRTL_CRITICAL_SECTION_DEBUG /* minwinbase.h:146:39 */

type LPOVERLAPPED_COMPLETION_ROUTINE = uintptr /* minwinbase.h:148:16 */

type _PROCESS_HEAP_ENTRY = struct {
	lpData       PVOID
	cbData       DWORD
	cbOverhead   BYTE
	iRegionIndex BYTE
	wFlags       WORD
	__12         struct {
		Block struct {
			hMem       HANDLE
			dwReserved [3]DWORD
		}
	}
} /* minwinbase.h:153:11 */

type PROCESS_HEAP_ENTRY = _PROCESS_HEAP_ENTRY /* minwinbase.h:171:5 */
type LPPROCESS_HEAP_ENTRY = uintptr           /* minwinbase.h:171:24 */
type PPROCESS_HEAP_ENTRY = uintptr            /* minwinbase.h:171:46 */

type _REASON_CONTEXT = struct {
	Version ULONG
	Flags   DWORD
	Reason  struct {
		Detailed struct {
			LocalizedReasonModule HMODULE
			LocalizedReasonId     ULONG
			ReasonStringCount     ULONG
			ReasonStrings         uintptr
		}
	}
} /* minwinbase.h:179:11 */

type REASON_CONTEXT = _REASON_CONTEXT /* minwinbase.h:191:5 */
type PREASON_CONTEXT = uintptr        /* minwinbase.h:191:21 */

type PTHREAD_START_ROUTINE = uintptr                /* minwinbase.h:203:17 */
type LPTHREAD_START_ROUTINE = PTHREAD_START_ROUTINE /* minwinbase.h:204:33 */

type _EXCEPTION_DEBUG_INFO = struct {
	ExceptionRecord EXCEPTION_RECORD
	dwFirstChance   DWORD
} /* minwinbase.h:206:11 */

type EXCEPTION_DEBUG_INFO = _EXCEPTION_DEBUG_INFO /* minwinbase.h:209:5 */
type LPEXCEPTION_DEBUG_INFO = uintptr             /* minwinbase.h:209:27 */

type _CREATE_THREAD_DEBUG_INFO = struct {
	hThread           HANDLE
	lpThreadLocalBase LPVOID
	lpStartAddress    LPTHREAD_START_ROUTINE
} /* minwinbase.h:211:11 */

type CREATE_THREAD_DEBUG_INFO = _CREATE_THREAD_DEBUG_INFO /* minwinbase.h:215:5 */
type LPCREATE_THREAD_DEBUG_INFO = uintptr                 /* minwinbase.h:215:31 */

type _CREATE_PROCESS_DEBUG_INFO = struct {
	hFile                 HANDLE
	hProcess              HANDLE
	hThread               HANDLE
	lpBaseOfImage         LPVOID
	dwDebugInfoFileOffset DWORD
	nDebugInfoSize        DWORD
	lpThreadLocalBase     LPVOID
	lpStartAddress        LPTHREAD_START_ROUTINE
	lpImageName           LPVOID
	fUnicode              WORD
	_                     [2]byte
} /* minwinbase.h:217:11 */

type CREATE_PROCESS_DEBUG_INFO = _CREATE_PROCESS_DEBUG_INFO /* minwinbase.h:228:5 */
type LPCREATE_PROCESS_DEBUG_INFO = uintptr                  /* minwinbase.h:228:32 */

type _EXIT_THREAD_DEBUG_INFO = struct{ dwExitCode DWORD } /* minwinbase.h:230:11 */

type EXIT_THREAD_DEBUG_INFO = _EXIT_THREAD_DEBUG_INFO /* minwinbase.h:232:5 */
type LPEXIT_THREAD_DEBUG_INFO = uintptr               /* minwinbase.h:232:29 */

type _EXIT_PROCESS_DEBUG_INFO = struct{ dwExitCode DWORD } /* minwinbase.h:234:11 */

type EXIT_PROCESS_DEBUG_INFO = _EXIT_PROCESS_DEBUG_INFO /* minwinbase.h:236:5 */
type LPEXIT_PROCESS_DEBUG_INFO = uintptr                /* minwinbase.h:236:30 */

type _LOAD_DLL_DEBUG_INFO = struct {
	hFile                 HANDLE
	lpBaseOfDll           LPVOID
	dwDebugInfoFileOffset DWORD
	nDebugInfoSize        DWORD
	lpImageName           LPVOID
	fUnicode              WORD
	_                     [2]byte
} /* minwinbase.h:238:11 */

type LOAD_DLL_DEBUG_INFO = _LOAD_DLL_DEBUG_INFO /* minwinbase.h:245:5 */
type LPLOAD_DLL_DEBUG_INFO = uintptr            /* minwinbase.h:245:26 */

type _UNLOAD_DLL_DEBUG_INFO = struct{ lpBaseOfDll LPVOID } /* minwinbase.h:247:11 */

type UNLOAD_DLL_DEBUG_INFO = _UNLOAD_DLL_DEBUG_INFO /* minwinbase.h:249:5 */
type LPUNLOAD_DLL_DEBUG_INFO = uintptr              /* minwinbase.h:249:28 */

type _OUTPUT_DEBUG_STRING_INFO = struct {
	lpDebugStringData  LPSTR
	fUnicode           WORD
	nDebugStringLength WORD
} /* minwinbase.h:251:11 */

type OUTPUT_DEBUG_STRING_INFO = _OUTPUT_DEBUG_STRING_INFO /* minwinbase.h:255:5 */
type LPOUTPUT_DEBUG_STRING_INFO = uintptr                 /* minwinbase.h:255:31 */

type _RIP_INFO = struct {
	dwError DWORD
	dwType  DWORD
} /* minwinbase.h:257:11 */

type RIP_INFO = _RIP_INFO /* minwinbase.h:260:5 */
type LPRIP_INFO = uintptr /* minwinbase.h:260:15 */

type _DEBUG_EVENT = struct {
	dwDebugEventCode DWORD
	dwProcessId      DWORD
	dwThreadId       DWORD
	u                struct{ Exception EXCEPTION_DEBUG_INFO }
} /* minwinbase.h:262:11 */

type DEBUG_EVENT = _DEBUG_EVENT /* minwinbase.h:277:5 */
type LPDEBUG_EVENT = uintptr    /* minwinbase.h:277:18 */

type LPCONTEXT = PCONTEXT                  /* minwinbase.h:280:20 */
type BEM_FREE_INTERFACE_CALLBACK = uintptr /* bemapiset.h:21:16 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type PTOP_LEVEL_EXCEPTION_FILTER = uintptr                      /* errhandlingapi.h:17:14 */
type LPTOP_LEVEL_EXCEPTION_FILTER = PTOP_LEVEL_EXCEPTION_FILTER /* errhandlingapi.h:18:37 */
type _BY_HANDLE_FILE_INFORMATION = struct {
	dwFileAttributes     DWORD
	ftCreationTime       FILETIME
	ftLastAccessTime     FILETIME
	ftLastWriteTime      FILETIME
	dwVolumeSerialNumber DWORD
	nFileSizeHigh        DWORD
	nFileSizeLow         DWORD
	nNumberOfLinks       DWORD
	nFileIndexHigh       DWORD
	nFileIndexLow        DWORD
} /* fileapi.h:38:11 */

type BY_HANDLE_FILE_INFORMATION = _BY_HANDLE_FILE_INFORMATION /* fileapi.h:49:5 */
type PBY_HANDLE_FILE_INFORMATION = uintptr                    /* fileapi.h:49:33 */
type LPBY_HANDLE_FILE_INFORMATION = uintptr                   /* fileapi.h:50:5 */

type _WIN32_FILE_ATTRIBUTE_DATA = struct {
	dwFileAttributes DWORD
	ftCreationTime   FILETIME
	ftLastAccessTime FILETIME
	ftLastWriteTime  FILETIME
	nFileSizeHigh    DWORD
	nFileSizeLow     DWORD
} /* fileapi.h:129:11 */

type WIN32_FILE_ATTRIBUTE_DATA = _WIN32_FILE_ATTRIBUTE_DATA /* fileapi.h:136:5 */
type LPWIN32_FILE_ATTRIBUTE_DATA = uintptr                  /* fileapi.h:136:32 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _HEAP_SUMMARY = struct {
	cb           DWORD
	cbAllocated  SIZE_T
	cbCommitted  SIZE_T
	cbReserved   SIZE_T
	cbMaxReserve SIZE_T
} /* heapapi.h:18:11 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type HEAP_SUMMARY = _HEAP_SUMMARY /* heapapi.h:24:5 */
type PHEAP_SUMMARY = uintptr      /* heapapi.h:24:18 */

type LPHEAP_SUMMARY = PHEAP_SUMMARY /* heapapi.h:26:25 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type tagENUMUILANG = struct {
	NumOfEnumUILang    ULONG
	SizeOfEnumUIBuffer ULONG
	pEnumUIBuffer      uintptr
} /* libloaderapi.h:18:11 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type ENUMUILANG = tagENUMUILANG /* libloaderapi.h:22:5 */
type PENUMUILANG = uintptr      /* libloaderapi.h:22:17 */

type ENUMRESLANGPROCA = uintptr /* libloaderapi.h:25:19 */
type ENUMRESLANGPROCW = uintptr /* libloaderapi.h:26:19 */
type ENUMRESNAMEPROCA = uintptr /* libloaderapi.h:27:19 */
type ENUMRESNAMEPROCW = uintptr /* libloaderapi.h:28:19 */
type ENUMRESTYPEPROCA = uintptr /* libloaderapi.h:29:19 */
type ENUMRESTYPEPROCW = uintptr /* libloaderapi.h:30:19 */

type PGET_MODULE_HANDLE_EXA = uintptr /* libloaderapi.h:41:19 */
type PGET_MODULE_HANDLE_EXW = uintptr /* libloaderapi.h:42:19 */

type DLL_DIRECTORY_COOKIE = PVOID    /* libloaderapi.h:45:17 */
type PDLL_DIRECTORY_COOKIE = uintptr /* libloaderapi.h:45:39 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type MEMORY_RESOURCE_NOTIFICATION_TYPE = uint32 /* memoryapi.h:21:5 */

type _PROCESS_INFORMATION = struct {
	hProcess    HANDLE
	hThread     HANDLE
	dwProcessId DWORD
	dwThreadId  DWORD
} /* processthreadsapi.h:28:11 */

type PROCESS_INFORMATION = _PROCESS_INFORMATION /* processthreadsapi.h:33:5 */
type PPROCESS_INFORMATION = uintptr             /* processthreadsapi.h:33:26 */
type LPPROCESS_INFORMATION = uintptr            /* processthreadsapi.h:33:49 */

type _STARTUPINFOA = struct {
	cb              DWORD
	lpReserved      LPSTR
	lpDesktop       LPSTR
	lpTitle         LPSTR
	dwX             DWORD
	dwY             DWORD
	dwXSize         DWORD
	dwYSize         DWORD
	dwXCountChars   DWORD
	dwYCountChars   DWORD
	dwFillAttribute DWORD
	dwFlags         DWORD
	wShowWindow     WORD
	cbReserved2     WORD
	lpReserved2     LPBYTE
	hStdInput       HANDLE
	hStdOutput      HANDLE
	hStdError       HANDLE
} /* processthreadsapi.h:35:11 */

type STARTUPINFOA = _STARTUPINFOA /* processthreadsapi.h:54:5 */
type LPSTARTUPINFOA = uintptr     /* processthreadsapi.h:54:19 */

type _STARTUPINFOW = struct {
	cb              DWORD
	lpReserved      LPWSTR
	lpDesktop       LPWSTR
	lpTitle         LPWSTR
	dwX             DWORD
	dwY             DWORD
	dwXSize         DWORD
	dwYSize         DWORD
	dwXCountChars   DWORD
	dwYCountChars   DWORD
	dwFillAttribute DWORD
	dwFlags         DWORD
	wShowWindow     WORD
	cbReserved2     WORD
	lpReserved2     LPBYTE
	hStdInput       HANDLE
	hStdOutput      HANDLE
	hStdError       HANDLE
} /* processthreadsapi.h:56:11 */

type STARTUPINFOW = _STARTUPINFOW /* processthreadsapi.h:75:5 */
type LPSTARTUPINFOW = uintptr     /* processthreadsapi.h:75:19 */

type STARTUPINFO = STARTUPINFOW     /* processthreadsapi.h:77:3 */
type LPSTARTUPINFO = LPSTARTUPINFOW /* processthreadsapi.h:78:3 */

type PPROC_THREAD_ATTRIBUTE_LIST = uintptr  /* processthreadsapi.h:80:46 */
type LPPROC_THREAD_ATTRIBUTE_LIST = uintptr /* processthreadsapi.h:80:76 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type SRWLOCK = RTL_SRWLOCK /* synchapi.h:34:23 */
type PSRWLOCK = uintptr    /* synchapi.h:34:32 */

type INIT_ONCE = RTL_RUN_ONCE    /* synchapi.h:36:24 */
type PINIT_ONCE = PRTL_RUN_ONCE  /* synchapi.h:37:25 */
type LPINIT_ONCE = PRTL_RUN_ONCE /* synchapi.h:38:25 */

type PINIT_ONCE_FN = uintptr                     /* synchapi.h:40:19 */
type CONDITION_VARIABLE = RTL_CONDITION_VARIABLE /* synchapi.h:41:34 */
type PCONDITION_VARIABLE = uintptr               /* synchapi.h:41:54 */

type PTIMERAPCROUTINE = uintptr /* synchapi.h:102:16 */

type SYNCHRONIZATION_BARRIER = RTL_BARRIER    /* synchapi.h:104:23 */
type PSYNCHRONIZATION_BARRIER = PRTL_BARRIER  /* synchapi.h:105:24 */
type LPSYNCHRONIZATION_BARRIER = PRTL_BARRIER /* synchapi.h:106:24 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _SYSTEM_INFO = struct {
	__0                         struct{ dwOemId DWORD }
	dwPageSize                  DWORD
	lpMinimumApplicationAddress LPVOID
	lpMaximumApplicationAddress LPVOID
	dwActiveProcessorMask       DWORD_PTR
	dwNumberOfProcessors        DWORD
	dwProcessorType             DWORD
	dwAllocationGranularity     DWORD
	wProcessorLevel             WORD
	wProcessorRevision          WORD
} /* sysinfoapi.h:18:11 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type SYSTEM_INFO = _SYSTEM_INFO /* sysinfoapi.h:35:5 */
type LPSYSTEM_INFO = uintptr    /* sysinfoapi.h:35:18 */

type _MEMORYSTATUSEX = struct {
	dwLength                DWORD
	dwMemoryLoad            DWORD
	ullTotalPhys            DWORDLONG
	ullAvailPhys            DWORDLONG
	ullTotalPageFile        DWORDLONG
	ullAvailPageFile        DWORDLONG
	ullTotalVirtual         DWORDLONG
	ullAvailVirtual         DWORDLONG
	ullAvailExtendedVirtual DWORDLONG
} /* sysinfoapi.h:48:11 */

type MEMORYSTATUSEX = _MEMORYSTATUSEX /* sysinfoapi.h:58:5 */
type LPMEMORYSTATUSEX = uintptr       /* sysinfoapi.h:58:20 */

type COMPUTER_NAME_FORMAT = uint32 /* sysinfoapi.h:80:5 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type PTP_WIN32_IO_CALLBACK = uintptr /* threadpoolapiset.h:18:16 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// There are 3 separate ways this file is intended to be used:
//
//    1) Included from intrin.h.  In this case, all intrinsics in this file get declarations and
//       implementations.  No special #defines are needed for this case.
//
//    2) Included from the library versions of these functions (ie mingw-w64-crt\intrincs\*.c).  All
//       intrinsics in this file must also be included in the library.  In this case, only the
//       specific functions requested will get defined, and they will not be defined as inline.  If
//       you have followed the instructions (below) for adding functions to this file, then all you
//       need to have in the .c file is the following:
//
//       #define __INTRINSIC_ONLYSPECIAL
//       #define __INTRINSIC_SPECIAL___stosb // Causes code generation in intrin-impl.h
//
//       #include <intrin.h>
//
//    3) Included from various platform sdk headers.  Some platform sdk headers (such as winnt.h)
//       define a subset of intrinsics.  To avoid potential conflicts, this file is designed to
//       allow for specific subsets of functions to be defined.  This is done by defining the
//       appropriate variable before including this file:
//
//       #define __INTRINSIC_GROUP_WINNT
//       #include <psdk_inc/intrin-impl.h>
//
//    In all cases, it is acceptable to include this file multiple times in any order (ie include
//    winnt.h to get its subset, then include intrin.h to get everything, or vice versa).
//
//    See also the comments at the top of intrin.h.

// To add an implementation for a new intrinsic to this file, you should comment out the current prototype in intrin.h.
//    If the function you are adding is not in intrin.h, you should not be adding it to this file.  This file is only
//    for MSVC intrinsics.
//
//    Make sure you put your definition in the right section (x86 vs x64), and use this outline when adding definitions
//    to this file:
//
// #if __INTRINSIC_PROLOG(__int2c)
//
// <prototype goes here>
//
// __INTRINSICS_USEINLINE
// <code goes here>
//
// #define __INTRINSIC_DEFINED___int2c
// #endif

// Note that there is no file-wide #if to prevent intrin-impl.h from being
//    included multiple times.  This is because this file might be included multiple
//    times to define various subsets of the functions it contains.

// However we do check for __MINGW_INTRIN_INLINE.  In theory this means we
//    can work with other compilers.

// Clang has support for MSVC builtins, GCC doesn't

// These macros are used by the routines below.  While this file may be included
//    multiple times, these macros only need to be defined once.

// The Barrier functions can never be in the library.  Since gcc only
// supports ReadWriteBarrier, map all 3 to do the same.

// The logic for this macro is:
//    if the function is not yet defined AND
//    (
//        (if we are not just defining special OR
//            (we are defining special AND this is one of the ones we are defining)
//        )
//    )

// Normally __INTRINSIC_ONLYSPECIAL is used to indicate that we are
//    being included in the library version of the intrinsic (case 2).  However,
//    that really only affects the definition of __INTRINSICS_USEINLINE.
//    So here we are letting it serve an additional purpose of only defining
//    the intrinsics for a certain file (case 3).  For example, to create the
//    intrinsics for the functions in winnt.h, define __INTRINSIC_GROUP_WINNT.
//
//    Note that this file can be included multiple times, and as a result
//    there can be overlap (definitions that appear in more than one
//    file).  This is handled by __INTRINSIC_DEFINED_*
//
//    If no groups are defined (such as what happens when including intrin.h),
//    all intrinsics are defined.

// If __INTRINSIC_ONLYSPECIAL is defined at this point, we are processing case 2.  In
//    that case, don't go looking for groups

// Note that this gets undefined at the end of this file

// To add an additional group, put the #ifdef and definitions here.

// Before 4.9.2, ia32intrin.h had broken versions of these.

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

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

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

type PFIBER_START_ROUTINE = uintptr               /* winbase.h:160:16 */
type LPFIBER_START_ROUTINE = PFIBER_START_ROUTINE /* winbase.h:161:32 */

type LPLDT_ENTRY = PLDT_ENTRY /* winbase.h:164:22 */

type _COMMPROP = struct {
	wPacketLength       WORD
	wPacketVersion      WORD
	dwServiceMask       DWORD
	dwReserved1         DWORD
	dwMaxTxQueue        DWORD
	dwMaxRxQueue        DWORD
	dwMaxBaud           DWORD
	dwProvSubType       DWORD
	dwProvCapabilities  DWORD
	dwSettableParams    DWORD
	dwSettableBaud      DWORD
	wSettableData       WORD
	wSettableStopParity WORD
	dwCurrentTxQueue    DWORD
	dwCurrentRxQueue    DWORD
	dwProvSpec1         DWORD
	dwProvSpec2         DWORD
	wcProvChar          [1]WCHAR
	_                   [2]byte
} /* winbase.h:240:11 */

type COMMPROP = _COMMPROP /* winbase.h:259:5 */
type LPCOMMPROP = uintptr /* winbase.h:259:14 */

type _COMSTAT = struct {
	fCtsHold uint32 /* DWORD fCtsHold: 1, DWORD fDsrHold: 1, DWORD fRlsdHold: 1, DWORD fXoffHold: 1, DWORD fXoffSent: 1, DWORD fEof: 1, DWORD fTxim: 1, DWORD fReserved: 25 */
	cbInQue  DWORD
	cbOutQue DWORD
} /* winbase.h:263:11 */

type COMSTAT = _COMSTAT  /* winbase.h:274:5 */
type LPCOMSTAT = uintptr /* winbase.h:274:13 */

type _DCB = struct {
	DCBlength  DWORD
	BaudRate   DWORD
	fBinary    uint32 /* DWORD fBinary: 1, DWORD fParity: 1, DWORD fOutxCtsFlow: 1, DWORD fOutxDsrFlow: 1, DWORD fDtrControl: 2, DWORD fDsrSensitivity: 1, DWORD fTXContinueOnXoff: 1, DWORD fOutX: 1, DWORD fInX: 1, DWORD fErrorChar: 1, DWORD fNull: 1, DWORD fRtsControl: 2, DWORD fAbortOnError: 1, DWORD fDummy2: 17 */
	wReserved  WORD
	XonLim     WORD
	XoffLim    WORD
	ByteSize   BYTE
	Parity     BYTE
	StopBits   BYTE
	XonChar    int8
	XoffChar   int8
	ErrorChar  int8
	EofChar    int8
	EvtChar    int8
	wReserved1 WORD
} /* winbase.h:285:11 */

type DCB = _DCB      /* winbase.h:314:5 */
type LPDCB = uintptr /* winbase.h:314:9 */

type _COMMTIMEOUTS = struct {
	ReadIntervalTimeout         DWORD
	ReadTotalTimeoutMultiplier  DWORD
	ReadTotalTimeoutConstant    DWORD
	WriteTotalTimeoutMultiplier DWORD
	WriteTotalTimeoutConstant   DWORD
} /* winbase.h:316:11 */

type COMMTIMEOUTS = _COMMTIMEOUTS /* winbase.h:322:5 */
type LPCOMMTIMEOUTS = uintptr     /* winbase.h:322:18 */

type _COMMCONFIG = struct {
	dwSize            DWORD
	wVersion          WORD
	wReserved         WORD
	dcb               DCB
	dwProviderSubType DWORD
	dwProviderOffset  DWORD
	dwProviderSize    DWORD
	wcProviderData    [1]WCHAR
	_                 [2]byte
} /* winbase.h:324:11 */

type COMMCONFIG = _COMMCONFIG /* winbase.h:333:5 */
type LPCOMMCONFIG = uintptr   /* winbase.h:333:16 */

type _MEMORYSTATUS = struct {
	dwLength        DWORD
	dwMemoryLoad    DWORD
	dwTotalPhys     SIZE_T
	dwAvailPhys     SIZE_T
	dwTotalPageFile SIZE_T
	dwAvailPageFile SIZE_T
	dwTotalVirtual  SIZE_T
	dwAvailVirtual  SIZE_T
} /* winbase.h:364:11 */

type MEMORYSTATUS = _MEMORYSTATUS /* winbase.h:373:5 */
type LPMEMORYSTATUS = uintptr     /* winbase.h:373:18 */

type _JIT_DEBUG_INFO = struct {
	dwSize                  DWORD
	dwProcessorArchitecture DWORD
	dwThreadID              DWORD
	dwReserved0             DWORD
	lpExceptionAddress      ULONG64
	lpExceptionRecord       ULONG64
	lpContextRecord         ULONG64
} /* winbase.h:431:11 */

type JIT_DEBUG_INFO = _JIT_DEBUG_INFO /* winbase.h:439:5 */
type LPJIT_DEBUG_INFO = uintptr       /* winbase.h:439:20 */

type JIT_DEBUG_INFO32 = JIT_DEBUG_INFO /* winbase.h:441:26 */
type LPJIT_DEBUG_INFO32 = uintptr      /* winbase.h:441:44 */
type JIT_DEBUG_INFO64 = JIT_DEBUG_INFO /* winbase.h:442:26 */
type LPJIT_DEBUG_INFO64 = uintptr      /* winbase.h:442:44 */

type LPEXCEPTION_RECORD = PEXCEPTION_RECORD     /* winbase.h:445:29 */
type LPEXCEPTION_POINTERS = PEXCEPTION_POINTERS /* winbase.h:446:31 */

type _OFSTRUCT = struct {
	cBytes     BYTE
	fFixedDisk BYTE
	nErrCode   WORD
	Reserved1  WORD
	Reserved2  WORD
	szPathName [128]CHAR
} /* winbase.h:620:11 */

type OFSTRUCT = _OFSTRUCT /* winbase.h:627:5 */
type LPOFSTRUCT = uintptr /* winbase.h:627:15 */
type POFSTRUCT = uintptr  /* winbase.h:627:27 */

// TODO: Add RTL_UMS... to winnt.h header and add UMS-base API.

type THREAD_INFORMATION_CLASS = uint32 /* winbase.h:1195:5 */

type PROCESS_INFORMATION_CLASS = uint32 /* winbase.h:1200:5 */

type DEP_SYSTEM_POLICY_TYPE = uint32 /* winbase.h:1304:5 */

type PFE_EXPORT_FUNC = uintptr /* winbase.h:1387:17 */
type PFE_IMPORT_FUNC = uintptr /* winbase.h:1388:17 */

type _WIN32_STREAM_ID = struct {
	dwStreamId         DWORD
	dwStreamAttributes DWORD
	Size               LARGE_INTEGER
	dwStreamNameSize   DWORD
	cStreamName        [1]WCHAR
	_                  [2]byte
} /* winbase.h:1465:11 */

type WIN32_STREAM_ID = _WIN32_STREAM_ID /* winbase.h:1471:5 */
type LPWIN32_STREAM_ID = uintptr        /* winbase.h:1471:21 */

type PGET_SYSTEM_WOW64_DIRECTORY_A = uintptr /* winbase.h:1856:16 */
type PGET_SYSTEM_WOW64_DIRECTORY_W = uintptr /* winbase.h:1857:16 */

type LPPROGRESS_ROUTINE = uintptr /* winbase.h:1960:17 */

type STREAM_INFO_LEVELS = uint32 /* winbase.h:2150:5 */

type _WIN32_FIND_STREAM_DATA = struct {
	StreamSize  LARGE_INTEGER
	cStreamName [296]WCHAR
} /* winbase.h:2152:11 */

type WIN32_FIND_STREAM_DATA = _WIN32_FIND_STREAM_DATA /* winbase.h:2155:5 */
type PWIN32_FIND_STREAM_DATA = uintptr                /* winbase.h:2155:28 */

type _EVENTLOG_FULL_INFORMATION = struct{ dwFull DWORD } /* winbase.h:2227:11 */

type EVENTLOG_FULL_INFORMATION = _EVENTLOG_FULL_INFORMATION /* winbase.h:2229:5 */
type LPEVENTLOG_FULL_INFORMATION = uintptr                  /* winbase.h:2229:31 */

type tagHW_PROFILE_INFOA = struct {
	dwDockInfo      DWORD
	szHwProfileGuid [39]CHAR
	szHwProfileName [80]CHAR
	_               [1]byte
} /* winbase.h:2444:11 */

type HW_PROFILE_INFOA = tagHW_PROFILE_INFOA /* winbase.h:2448:5 */
type LPHW_PROFILE_INFOA = uintptr           /* winbase.h:2448:22 */

type tagHW_PROFILE_INFOW = struct {
	dwDockInfo      DWORD
	szHwProfileGuid [39]WCHAR
	szHwProfileName [80]WCHAR
	_               [2]byte
} /* winbase.h:2450:11 */

type HW_PROFILE_INFOW = tagHW_PROFILE_INFOW /* winbase.h:2454:5 */
type LPHW_PROFILE_INFOW = uintptr           /* winbase.h:2454:22 */

type HW_PROFILE_INFO = HW_PROFILE_INFOW     /* winbase.h:2456:3 */
type LPHW_PROFILE_INFO = LPHW_PROFILE_INFOW /* winbase.h:2457:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// ********************   WARNING   ********************
// This is inconsistent with MSDN!
// In MSDN:
//     ERROR_IPSEC_IKE_QM_LIMIT => 13884 (here not defined)
//     ERROR_IPSEC_IKE_NEG_STATUS_END => 13897 (here 13884)
// Source:
//     WinINet Reference -> WinINet Constants -> Error Messages
//     https://msdn.microsoft.com/en-us/library/windows/desktop/aa385465%28v=vs.85%29.aspx
// ******************** END WARNING ********************
//#define ERROR_IPSEC_IKE_NEG_STATUS_END __MSABI_LONG(13884)

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _TIME_ZONE_INFORMATION = struct {
	Bias         LONG
	StandardName [32]WCHAR
	StandardDate SYSTEMTIME
	StandardBias LONG
	DaylightName [32]WCHAR
	DaylightDate SYSTEMTIME
	DaylightBias LONG
} /* timezoneapi.h:21:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// ********************   WARNING   ********************
// This is inconsistent with MSDN!
// In MSDN:
//     ERROR_IPSEC_IKE_QM_LIMIT => 13884 (here not defined)
//     ERROR_IPSEC_IKE_NEG_STATUS_END => 13897 (here 13884)
// Source:
//     WinINet Reference -> WinINet Constants -> Error Messages
//     https://msdn.microsoft.com/en-us/library/windows/desktop/aa385465%28v=vs.85%29.aspx
// ******************** END WARNING ********************
//#define ERROR_IPSEC_IKE_NEG_STATUS_END __MSABI_LONG(13884)

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type TIME_ZONE_INFORMATION = _TIME_ZONE_INFORMATION /* timezoneapi.h:29:5 */
type PTIME_ZONE_INFORMATION = uintptr               /* timezoneapi.h:29:27 */
type LPTIME_ZONE_INFORMATION = uintptr              /* timezoneapi.h:29:51 */

type _TIME_DYNAMIC_ZONE_INFORMATION = struct {
	Bias                        LONG
	StandardName                [32]WCHAR
	StandardDate                SYSTEMTIME
	StandardBias                LONG
	DaylightName                [32]WCHAR
	DaylightDate                SYSTEMTIME
	DaylightBias                LONG
	TimeZoneKeyName             [128]WCHAR
	DynamicDaylightTimeDisabled BOOLEAN
	_                           [3]byte
} /* timezoneapi.h:31:11 */

type DYNAMIC_TIME_ZONE_INFORMATION = _TIME_DYNAMIC_ZONE_INFORMATION /* timezoneapi.h:41:5 */
type PDYNAMIC_TIME_ZONE_INFORMATION = uintptr                       /* timezoneapi.h:41:35 */

type _SYSTEM_POWER_STATUS = struct {
	ACLineStatus        BYTE
	BatteryFlag         BYTE
	BatteryLifePercent  BYTE
	Reserved1           BYTE
	BatteryLifeTime     DWORD
	BatteryFullLifeTime DWORD
} /* winbase.h:2495:11 */

type SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS /* winbase.h:2502:5 */
type LPSYSTEM_POWER_STATUS = uintptr            /* winbase.h:2502:25 */

type tagACTCTXA = struct {
	cbSize                 ULONG
	dwFlags                DWORD
	lpSource               LPCSTR
	wProcessorArchitecture USHORT
	wLangId                LANGID
	lpAssemblyDirectory    LPCSTR
	lpResourceName         LPCSTR
	lpApplicationName      LPCSTR
	hModule                HMODULE
} /* winbase.h:2573:11 */

type ACTCTXA = tagACTCTXA /* winbase.h:2583:5 */
type PACTCTXA = uintptr   /* winbase.h:2583:13 */

type tagACTCTXW = struct {
	cbSize                 ULONG
	dwFlags                DWORD
	lpSource               LPCWSTR
	wProcessorArchitecture USHORT
	wLangId                LANGID
	lpAssemblyDirectory    LPCWSTR
	lpResourceName         LPCWSTR
	lpApplicationName      LPCWSTR
	hModule                HMODULE
} /* winbase.h:2585:11 */

type ACTCTXW = tagACTCTXW /* winbase.h:2595:5 */
type PACTCTXW = uintptr   /* winbase.h:2595:13 */

type ACTCTX = ACTCTXW   /* winbase.h:2597:3 */
type PACTCTX = PACTCTXW /* winbase.h:2598:3 */

type PCACTCTXA = uintptr /* winbase.h:2600:25 */
type PCACTCTXW = uintptr /* winbase.h:2601:25 */

type PCACTCTX = PCACTCTXW /* winbase.h:2603:3 */

type tagACTCTX_SECTION_KEYED_DATA_2600 = struct {
	cbSize                    ULONG
	ulDataFormatVersion       ULONG
	lpData                    PVOID
	ulLength                  ULONG
	lpSectionGlobalData       PVOID
	ulSectionGlobalDataLength ULONG
	lpSectionBase             PVOID
	ulSectionTotalLength      ULONG
	hActCtx                   HANDLE
	ulAssemblyRosterIndex     ULONG
} /* winbase.h:2617:11 */

type ACTCTX_SECTION_KEYED_DATA_2600 = tagACTCTX_SECTION_KEYED_DATA_2600 /* winbase.h:2628:5 */
type PACTCTX_SECTION_KEYED_DATA_2600 = uintptr                          /* winbase.h:2628:36 */

type PCACTCTX_SECTION_KEYED_DATA_2600 = uintptr /* winbase.h:2630:48 */

type tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = struct {
	lpInformation             PVOID
	lpSectionBase             PVOID
	ulSectionLength           ULONG
	lpSectionGlobalDataBase   PVOID
	ulSectionGlobalDataLength ULONG
} /* winbase.h:2632:11 */

type ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA /* winbase.h:2638:5 */
type PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = uintptr                                       /* winbase.h:2638:49 */

type PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA = uintptr /* winbase.h:2640:61 */

type tagACTCTX_SECTION_KEYED_DATA = struct {
	cbSize                    ULONG
	ulDataFormatVersion       ULONG
	lpData                    PVOID
	ulLength                  ULONG
	lpSectionGlobalData       PVOID
	ulSectionGlobalDataLength ULONG
	lpSectionBase             PVOID
	ulSectionTotalLength      ULONG
	hActCtx                   HANDLE
	ulAssemblyRosterIndex     ULONG
	ulFlags                   ULONG
	AssemblyMetadata          ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA
} /* winbase.h:2642:11 */

type ACTCTX_SECTION_KEYED_DATA = tagACTCTX_SECTION_KEYED_DATA /* winbase.h:2655:5 */
type PACTCTX_SECTION_KEYED_DATA = uintptr                     /* winbase.h:2655:31 */

type PCACTCTX_SECTION_KEYED_DATA = uintptr /* winbase.h:2657:43 */

type _ACTIVATION_CONTEXT_BASIC_INFORMATION = struct {
	hActCtx HANDLE
	dwFlags DWORD
} /* winbase.h:2670:11 */

type ACTIVATION_CONTEXT_BASIC_INFORMATION = _ACTIVATION_CONTEXT_BASIC_INFORMATION /* winbase.h:2673:5 */
type PACTIVATION_CONTEXT_BASIC_INFORMATION = uintptr                              /* winbase.h:2673:42 */

type PCACTIVATION_CONTEXT_BASIC_INFORMATION = uintptr /* winbase.h:2675:62 */

type PQUERYACTCTXW_FUNC = uintptr /* winbase.h:2687:19 */

type APPLICATION_RECOVERY_CALLBACK = uintptr /* winbase.h:2707:17 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _DRAWPATRECT = struct {
	ptPosition POINT
	ptSize     POINT
	wStyle     WORD
	wPattern   WORD
} /* wingdi.h:224:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type DRAWPATRECT = _DRAWPATRECT /* wingdi.h:229:5 */
type PDRAWPATRECT = uintptr     /* wingdi.h:229:17 */

type _PSINJECTDATA = struct {
	DataBytes      DWORD
	InjectionPoint WORD
	PageNumber     WORD
} /* wingdi.h:335:11 */

type PSINJECTDATA = _PSINJECTDATA /* wingdi.h:339:5 */
type PPSINJECTDATA = uintptr      /* wingdi.h:339:18 */

type _PSFEATURE_OUTPUT = struct {
	bPageIndependent WINBOOL
	bSetPageDevice   WINBOOL
} /* wingdi.h:391:11 */

type PSFEATURE_OUTPUT = _PSFEATURE_OUTPUT /* wingdi.h:394:5 */
type PPSFEATURE_OUTPUT = uintptr          /* wingdi.h:394:22 */

type _PSFEATURE_CUSTPAPER = struct {
	lOrientation  LONG
	lWidth        LONG
	lHeight       LONG
	lWidthOffset  LONG
	lHeightOffset LONG
} /* wingdi.h:396:11 */

type PSFEATURE_CUSTPAPER = _PSFEATURE_CUSTPAPER /* wingdi.h:402:5 */
type PPSFEATURE_CUSTPAPER = uintptr             /* wingdi.h:402:25 */

type tagXFORM = struct {
	eM11 FLOAT
	eM12 FLOAT
	eM21 FLOAT
	eM22 FLOAT
	eDx  FLOAT
	eDy  FLOAT
} /* wingdi.h:450:11 */

type XFORM = tagXFORM  /* wingdi.h:457:5 */
type PXFORM = uintptr  /* wingdi.h:457:11 */
type LPXFORM = uintptr /* wingdi.h:457:19 */

type tagBITMAP = struct {
	bmType       LONG
	bmWidth      LONG
	bmHeight     LONG
	bmWidthBytes LONG
	bmPlanes     WORD
	bmBitsPixel  WORD
	bmBits       LPVOID
} /* wingdi.h:459:11 */

type BITMAP = tagBITMAP /* wingdi.h:467:5 */
type PBITMAP = uintptr  /* wingdi.h:467:12 */
type NPBITMAP = uintptr /* wingdi.h:467:21 */
type LPBITMAP = uintptr /* wingdi.h:467:31 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type tagRGBTRIPLE = struct {
	rgbtBlue  BYTE
	rgbtGreen BYTE
	rgbtRed   BYTE
} /* wingdi.h:470:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type RGBTRIPLE = tagRGBTRIPLE /* wingdi.h:474:5 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagRGBQUAD = struct {
	rgbBlue     BYTE
	rgbGreen    BYTE
	rgbRed      BYTE
	rgbReserved BYTE
} /* wingdi.h:477:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RGBQUAD = tagRGBQUAD /* wingdi.h:482:5 */

type LPRGBQUAD = uintptr /* wingdi.h:486:19 */

type LCSCSTYPE = LONG /* wingdi.h:499:16 */

type LCSGAMUTMATCH = LONG /* wingdi.h:502:16 */

type FXPT16DOT16 = int32     /* wingdi.h:526:20 */
type LPFXPT16DOT16 = uintptr /* wingdi.h:526:32 */
type FXPT2DOT30 = int32      /* wingdi.h:527:20 */
type LPFXPT2DOT30 = uintptr  /* wingdi.h:527:31 */

type tagCIEXYZ = struct {
	ciexyzX FXPT2DOT30
	ciexyzY FXPT2DOT30
	ciexyzZ FXPT2DOT30
} /* wingdi.h:529:11 */

type CIEXYZ = tagCIEXYZ /* wingdi.h:533:5 */
type LPCIEXYZ = uintptr /* wingdi.h:536:18 */
type tagICEXYZTRIPLE = struct {
	ciexyzRed   CIEXYZ
	ciexyzGreen CIEXYZ
	ciexyzBlue  CIEXYZ
} /* wingdi.h:539:11 */

type CIEXYZTRIPLE = tagICEXYZTRIPLE /* wingdi.h:543:5 */
type LPCIEXYZTRIPLE = uintptr       /* wingdi.h:546:24 */

type tagLOGCOLORSPACEA = struct {
	lcsSignature  DWORD
	lcsVersion    DWORD
	lcsSize       DWORD
	lcsCSType     LCSCSTYPE
	lcsIntent     LCSGAMUTMATCH
	lcsEndpoints  CIEXYZTRIPLE
	lcsGammaRed   DWORD
	lcsGammaGreen DWORD
	lcsGammaBlue  DWORD
	lcsFilename   [260]CHAR
} /* wingdi.h:550:11 */

type LOGCOLORSPACEA = tagLOGCOLORSPACEA /* wingdi.h:561:5 */
type LPLOGCOLORSPACEA = uintptr         /* wingdi.h:561:20 */

type tagLOGCOLORSPACEW = struct {
	lcsSignature  DWORD
	lcsVersion    DWORD
	lcsSize       DWORD
	lcsCSType     LCSCSTYPE
	lcsIntent     LCSGAMUTMATCH
	lcsEndpoints  CIEXYZTRIPLE
	lcsGammaRed   DWORD
	lcsGammaGreen DWORD
	lcsGammaBlue  DWORD
	lcsFilename   [260]WCHAR
} /* wingdi.h:563:11 */

type LOGCOLORSPACEW = tagLOGCOLORSPACEW /* wingdi.h:574:5 */
type LPLOGCOLORSPACEW = uintptr         /* wingdi.h:574:20 */

type LOGCOLORSPACE = LOGCOLORSPACEW     /* wingdi.h:576:3 */
type LPLOGCOLORSPACE = LPLOGCOLORSPACEW /* wingdi.h:577:3 */

type tagBITMAPCOREHEADER = struct {
	bcSize     DWORD
	bcWidth    WORD
	bcHeight   WORD
	bcPlanes   WORD
	bcBitCount WORD
} /* wingdi.h:581:11 */

type BITMAPCOREHEADER = tagBITMAPCOREHEADER /* wingdi.h:587:5 */
type LPBITMAPCOREHEADER = uintptr           /* wingdi.h:587:22 */
type PBITMAPCOREHEADER = uintptr            /* wingdi.h:587:42 */

type tagBITMAPINFOHEADER = struct {
	biSize          DWORD
	biWidth         LONG
	biHeight        LONG
	biPlanes        WORD
	biBitCount      WORD
	biCompression   DWORD
	biSizeImage     DWORD
	biXPelsPerMeter LONG
	biYPelsPerMeter LONG
	biClrUsed       DWORD
	biClrImportant  DWORD
} /* wingdi.h:591:11 */

type BITMAPINFOHEADER = tagBITMAPINFOHEADER /* wingdi.h:603:5 */
type LPBITMAPINFOHEADER = uintptr           /* wingdi.h:603:22 */
type PBITMAPINFOHEADER = uintptr            /* wingdi.h:603:42 */

type BITMAPV4HEADER = struct {
	bV4Size          DWORD
	bV4Width         LONG
	bV4Height        LONG
	bV4Planes        WORD
	bV4BitCount      WORD
	bV4V4Compression DWORD
	bV4SizeImage     DWORD
	bV4XPelsPerMeter LONG
	bV4YPelsPerMeter LONG
	bV4ClrUsed       DWORD
	bV4ClrImportant  DWORD
	bV4RedMask       DWORD
	bV4GreenMask     DWORD
	bV4BlueMask      DWORD
	bV4AlphaMask     DWORD
	bV4CSType        DWORD
	bV4Endpoints     CIEXYZTRIPLE
	bV4GammaRed      DWORD
	bV4GammaGreen    DWORD
	bV4GammaBlue     DWORD
}                               /* wingdi.h:628:5 */
type LPBITMAPV4HEADER = uintptr /* wingdi.h:628:20 */
type PBITMAPV4HEADER = uintptr  /* wingdi.h:628:38 */

type BITMAPV5HEADER = struct {
	bV5Size          DWORD
	bV5Width         LONG
	bV5Height        LONG
	bV5Planes        WORD
	bV5BitCount      WORD
	bV5Compression   DWORD
	bV5SizeImage     DWORD
	bV5XPelsPerMeter LONG
	bV5YPelsPerMeter LONG
	bV5ClrUsed       DWORD
	bV5ClrImportant  DWORD
	bV5RedMask       DWORD
	bV5GreenMask     DWORD
	bV5BlueMask      DWORD
	bV5AlphaMask     DWORD
	bV5CSType        DWORD
	bV5Endpoints     CIEXYZTRIPLE
	bV5GammaRed      DWORD
	bV5GammaGreen    DWORD
	bV5GammaBlue     DWORD
	bV5Intent        DWORD
	bV5ProfileData   DWORD
	bV5ProfileSize   DWORD
	bV5Reserved      DWORD
}                               /* wingdi.h:655:5 */
type LPBITMAPV5HEADER = uintptr /* wingdi.h:655:20 */
type PBITMAPV5HEADER = uintptr  /* wingdi.h:655:38 */

type tagBITMAPINFO = struct {
	bmiHeader BITMAPINFOHEADER
	bmiColors [1]RGBQUAD
} /* wingdi.h:669:11 */

type BITMAPINFO = tagBITMAPINFO /* wingdi.h:672:5 */
type LPBITMAPINFO = uintptr     /* wingdi.h:672:16 */
type PBITMAPINFO = uintptr      /* wingdi.h:672:30 */

type tagBITMAPCOREINFO = struct {
	bmciHeader BITMAPCOREHEADER
	bmciColors [1]RGBTRIPLE
	_          [1]byte
} /* wingdi.h:676:11 */

type BITMAPCOREINFO = tagBITMAPCOREINFO /* wingdi.h:679:5 */
type LPBITMAPCOREINFO = uintptr         /* wingdi.h:679:20 */
type PBITMAPCOREINFO = uintptr          /* wingdi.h:679:38 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type tagBITMAPFILEHEADER = struct {
	bfType      WORD
	_           [2]byte
	bfSize      DWORD
	bfReserved1 WORD
	bfReserved2 WORD
	bfOffBits   DWORD
} /* wingdi.h:682:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type BITMAPFILEHEADER = tagBITMAPFILEHEADER /* wingdi.h:688:5 */
type LPBITMAPFILEHEADER = uintptr           /* wingdi.h:688:22 */
type PBITMAPFILEHEADER = uintptr            /* wingdi.h:688:42 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagFONTSIGNATURE = struct {
	fsUsb [4]DWORD
	fsCsb [2]DWORD
} /* wingdi.h:697:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type FONTSIGNATURE = tagFONTSIGNATURE /* wingdi.h:700:5 */
type PFONTSIGNATURE = uintptr         /* wingdi.h:700:19 */
type LPFONTSIGNATURE = uintptr        /* wingdi.h:700:35 */

type tagCHARSETINFO = struct {
	ciCharset UINT
	ciACP     UINT
	fs        FONTSIGNATURE
} /* wingdi.h:702:11 */

type CHARSETINFO = tagCHARSETINFO /* wingdi.h:706:5 */
type PCHARSETINFO = uintptr       /* wingdi.h:706:17 */
type NPCHARSETINFO = uintptr      /* wingdi.h:706:31 */
type LPCHARSETINFO = uintptr      /* wingdi.h:706:46 */

type tagLOCALESIGNATURE = struct {
	lsUsb          [4]DWORD
	lsCsbDefault   [2]DWORD
	lsCsbSupported [2]DWORD
} /* wingdi.h:715:11 */

type LOCALESIGNATURE = tagLOCALESIGNATURE /* wingdi.h:719:5 */
type PLOCALESIGNATURE = uintptr           /* wingdi.h:719:21 */
type LPLOCALESIGNATURE = uintptr          /* wingdi.h:719:39 */

type tagHANDLETABLE = struct{ objectHandle [1]HGDIOBJ } /* wingdi.h:725:11 */

type HANDLETABLE = tagHANDLETABLE /* wingdi.h:727:5 */
type PHANDLETABLE = uintptr       /* wingdi.h:727:17 */
type LPHANDLETABLE = uintptr      /* wingdi.h:727:31 */

type tagMETARECORD = struct {
	rdSize     DWORD
	rdFunction WORD
	rdParm     [1]WORD
} /* wingdi.h:729:11 */

type METARECORD = tagMETARECORD /* wingdi.h:733:5 */
type PMETARECORD = uintptr      /* wingdi.h:736:42 */
type LPMETARECORD = uintptr     /* wingdi.h:739:42 */

type tagMETAFILEPICT = struct {
	mm   LONG
	xExt LONG
	yExt LONG
	hMF  HMETAFILE
} /* wingdi.h:741:11 */

type METAFILEPICT = tagMETAFILEPICT /* wingdi.h:746:5 */
type LPMETAFILEPICT = uintptr       /* wingdi.h:746:18 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type tagMETAHEADER = struct {
	mtType         WORD
	mtHeaderSize   WORD
	mtVersion      WORD
	_              [2]byte
	mtSize         DWORD
	mtNoObjects    WORD
	_              [2]byte
	mtMaxRecord    DWORD
	mtNoParameters WORD
	_              [2]byte
} /* wingdi.h:751:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type METAHEADER = tagMETAHEADER /* wingdi.h:759:5 */
type PMETAHEADER = uintptr      /* wingdi.h:760:42 */
type LPMETAHEADER = uintptr     /* wingdi.h:761:42 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagENHMETARECORD = struct {
	iType DWORD
	nSize DWORD
	dParm [1]DWORD
} /* wingdi.h:767:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type ENHMETARECORD = tagENHMETARECORD /* wingdi.h:771:5 */
type PENHMETARECORD = uintptr         /* wingdi.h:771:19 */
type LPENHMETARECORD = uintptr        /* wingdi.h:771:35 */

type tagENHMETAHEADER = struct {
	iType          DWORD
	nSize          DWORD
	rclBounds      RECTL
	rclFrame       RECTL
	dSignature     DWORD
	nVersion       DWORD
	nBytes         DWORD
	nRecords       DWORD
	nHandles       WORD
	sReserved      WORD
	nDescription   DWORD
	offDescription DWORD
	nPalEntries    DWORD
	szlDevice      SIZEL
	szlMillimeters SIZEL
	cbPixelFormat  DWORD
	offPixelFormat DWORD
	bOpenGL        DWORD
	szlMicrometers SIZEL
} /* wingdi.h:773:11 */

type ENHMETAHEADER = tagENHMETAHEADER /* wingdi.h:793:5 */
type PENHMETAHEADER = uintptr         /* wingdi.h:793:19 */
type LPENHMETAHEADER = uintptr        /* wingdi.h:793:35 */

type BCHAR = WCHAR /* wingdi.h:805:17 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagTEXTMETRICA = struct {
	tmHeight           LONG
	tmAscent           LONG
	tmDescent          LONG
	tmInternalLeading  LONG
	tmExternalLeading  LONG
	tmAveCharWidth     LONG
	tmMaxCharWidth     LONG
	tmWeight           LONG
	tmOverhang         LONG
	tmDigitizedAspectX LONG
	tmDigitizedAspectY LONG
	tmFirstChar        BYTE
	tmLastChar         BYTE
	tmDefaultChar      BYTE
	tmBreakChar        BYTE
	tmItalic           BYTE
	tmUnderlined       BYTE
	tmStruckOut        BYTE
	tmPitchAndFamily   BYTE
	tmCharSet          BYTE
	_                  [3]byte
} /* wingdi.h:816:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type TEXTMETRICA = tagTEXTMETRICA /* wingdi.h:837:5 */
type PTEXTMETRICA = uintptr       /* wingdi.h:837:17 */
type NPTEXTMETRICA = uintptr      /* wingdi.h:837:31 */
type LPTEXTMETRICA = uintptr      /* wingdi.h:837:46 */

type tagTEXTMETRICW = struct {
	tmHeight           LONG
	tmAscent           LONG
	tmDescent          LONG
	tmInternalLeading  LONG
	tmExternalLeading  LONG
	tmAveCharWidth     LONG
	tmMaxCharWidth     LONG
	tmWeight           LONG
	tmOverhang         LONG
	tmDigitizedAspectX LONG
	tmDigitizedAspectY LONG
	tmFirstChar        WCHAR
	tmLastChar         WCHAR
	tmDefaultChar      WCHAR
	tmBreakChar        WCHAR
	tmItalic           BYTE
	tmUnderlined       BYTE
	tmStruckOut        BYTE
	tmPitchAndFamily   BYTE
	tmCharSet          BYTE
	_                  [3]byte
} /* wingdi.h:839:11 */

type TEXTMETRICW = tagTEXTMETRICW /* wingdi.h:860:5 */
type PTEXTMETRICW = uintptr       /* wingdi.h:860:17 */
type NPTEXTMETRICW = uintptr      /* wingdi.h:860:31 */
type LPTEXTMETRICW = uintptr      /* wingdi.h:860:46 */

type TEXTMETRIC = TEXTMETRICW     /* wingdi.h:862:3 */
type PTEXTMETRIC = PTEXTMETRICW   /* wingdi.h:863:3 */
type NPTEXTMETRIC = NPTEXTMETRICW /* wingdi.h:864:3 */
type LPTEXTMETRIC = LPTEXTMETRICW /* wingdi.h:865:3 */
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type tagNEWTEXTMETRICA = struct {
	tmHeight           LONG
	tmAscent           LONG
	tmDescent          LONG
	tmInternalLeading  LONG
	tmExternalLeading  LONG
	tmAveCharWidth     LONG
	tmMaxCharWidth     LONG
	tmWeight           LONG
	tmOverhang         LONG
	tmDigitizedAspectX LONG
	tmDigitizedAspectY LONG
	tmFirstChar        BYTE
	tmLastChar         BYTE
	tmDefaultChar      BYTE
	tmBreakChar        BYTE
	tmItalic           BYTE
	tmUnderlined       BYTE
	tmStruckOut        BYTE
	tmPitchAndFamily   BYTE
	tmCharSet          BYTE
	_                  [3]byte
	ntmFlags           DWORD
	ntmSizeEM          UINT
	ntmCellHeight      UINT
	ntmAvgWidth        UINT
} /* wingdi.h:883:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
type NEWTEXTMETRICA = tagNEWTEXTMETRICA /* wingdi.h:908:5 */
type PNEWTEXTMETRICA = uintptr          /* wingdi.h:908:20 */
type NPNEWTEXTMETRICA = uintptr         /* wingdi.h:908:37 */
type LPNEWTEXTMETRICA = uintptr         /* wingdi.h:908:55 */

type tagNEWTEXTMETRICW = struct {
	tmHeight           LONG
	tmAscent           LONG
	tmDescent          LONG
	tmInternalLeading  LONG
	tmExternalLeading  LONG
	tmAveCharWidth     LONG
	tmMaxCharWidth     LONG
	tmWeight           LONG
	tmOverhang         LONG
	tmDigitizedAspectX LONG
	tmDigitizedAspectY LONG
	tmFirstChar        WCHAR
	tmLastChar         WCHAR
	tmDefaultChar      WCHAR
	tmBreakChar        WCHAR
	tmItalic           BYTE
	tmUnderlined       BYTE
	tmStruckOut        BYTE
	tmPitchAndFamily   BYTE
	tmCharSet          BYTE
	_                  [3]byte
	ntmFlags           DWORD
	ntmSizeEM          UINT
	ntmCellHeight      UINT
	ntmAvgWidth        UINT
} /* wingdi.h:910:11 */

type NEWTEXTMETRICW = tagNEWTEXTMETRICW /* wingdi.h:935:5 */
type PNEWTEXTMETRICW = uintptr          /* wingdi.h:935:20 */
type NPNEWTEXTMETRICW = uintptr         /* wingdi.h:935:37 */
type LPNEWTEXTMETRICW = uintptr         /* wingdi.h:935:55 */

type NEWTEXTMETRIC = NEWTEXTMETRICW     /* wingdi.h:937:3 */
type PNEWTEXTMETRIC = PNEWTEXTMETRICW   /* wingdi.h:938:3 */
type NPNEWTEXTMETRIC = NPNEWTEXTMETRICW /* wingdi.h:939:3 */
type LPNEWTEXTMETRIC = LPNEWTEXTMETRICW /* wingdi.h:940:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagNEWTEXTMETRICEXA = struct {
	ntmTm      NEWTEXTMETRICA
	ntmFontSig FONTSIGNATURE
} /* wingdi.h:944:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type NEWTEXTMETRICEXA = tagNEWTEXTMETRICEXA /* wingdi.h:947:5 */

type tagNEWTEXTMETRICEXW = struct {
	ntmTm      NEWTEXTMETRICW
	ntmFontSig FONTSIGNATURE
} /* wingdi.h:949:11 */

type NEWTEXTMETRICEXW = tagNEWTEXTMETRICEXW /* wingdi.h:952:5 */

type NEWTEXTMETRICEX = NEWTEXTMETRICEXW /* wingdi.h:954:3 */

type tagPELARRAY = struct {
	paXCount LONG
	paYCount LONG
	paXExt   LONG
	paYExt   LONG
	paRGBs   BYTE
	_        [3]byte
} /* wingdi.h:959:11 */

type PELARRAY = tagPELARRAY /* wingdi.h:965:5 */
type PPELARRAY = uintptr    /* wingdi.h:965:14 */
type NPPELARRAY = uintptr   /* wingdi.h:965:25 */
type LPPELARRAY = uintptr   /* wingdi.h:965:37 */
type tagLOGBRUSH = struct {
	lbStyle UINT
	lbColor COLORREF
	lbHatch ULONG_PTR
} /* wingdi.h:968:11 */

type LOGBRUSH = tagLOGBRUSH /* wingdi.h:972:5 */
type PLOGBRUSH = uintptr    /* wingdi.h:972:14 */
type NPLOGBRUSH = uintptr   /* wingdi.h:972:25 */
type LPLOGBRUSH = uintptr   /* wingdi.h:972:37 */

type tagLOGBRUSH32 = struct {
	lbStyle UINT
	lbColor COLORREF
	lbHatch ULONG
} /* wingdi.h:974:11 */

type LOGBRUSH32 = tagLOGBRUSH32 /* wingdi.h:978:5 */
type PLOGBRUSH32 = uintptr      /* wingdi.h:978:16 */
type NPLOGBRUSH32 = uintptr     /* wingdi.h:978:29 */
type LPLOGBRUSH32 = uintptr     /* wingdi.h:978:43 */
type PATTERN = LOGBRUSH         /* wingdi.h:981:20 */
type PPATTERN = uintptr         /* wingdi.h:982:19 */
type NPPATTERN = uintptr        /* wingdi.h:983:19 */
type LPPATTERN = uintptr        /* wingdi.h:984:19 */

type tagLOGPEN = struct {
	lopnStyle UINT
	lopnWidth POINT
	lopnColor COLORREF
} /* wingdi.h:988:11 */

type LOGPEN = tagLOGPEN /* wingdi.h:992:5 */
type PLOGPEN = uintptr  /* wingdi.h:992:12 */
type NPLOGPEN = uintptr /* wingdi.h:992:21 */
type LPLOGPEN = uintptr /* wingdi.h:992:31 */

type tagEXTLOGPEN = struct {
	elpPenStyle   DWORD
	elpWidth      DWORD
	elpBrushStyle UINT
	elpColor      COLORREF
	elpHatch      ULONG_PTR
	elpNumEntries DWORD
	elpStyleEntry [1]DWORD
} /* wingdi.h:996:11 */

type EXTLOGPEN = tagEXTLOGPEN /* wingdi.h:1004:5 */
type PEXTLOGPEN = uintptr     /* wingdi.h:1004:15 */
type NPEXTLOGPEN = uintptr    /* wingdi.h:1004:27 */
type LPEXTLOGPEN = uintptr    /* wingdi.h:1004:40 */

type tagEXTLOGPEN32 = struct {
	elpPenStyle   DWORD
	elpWidth      DWORD
	elpBrushStyle UINT
	elpColor      COLORREF
	elpHatch      ULONG
	elpNumEntries DWORD
	elpStyleEntry [1]DWORD
} /* wingdi.h:1008:11 */

type EXTLOGPEN32 = tagEXTLOGPEN32 /* wingdi.h:1016:5 */
type PEXTLOGPEN32 = uintptr       /* wingdi.h:1016:18 */
type NPEXTLOGPEN32 = uintptr      /* wingdi.h:1016:33 */
type LPEXTLOGPEN32 = uintptr      /* wingdi.h:1016:49 */

type tagPALETTEENTRY = struct {
	peRed   BYTE
	peGreen BYTE
	peBlue  BYTE
	peFlags BYTE
} /* wingdi.h:1020:11 */

type PALETTEENTRY = tagPALETTEENTRY /* wingdi.h:1025:5 */
type PPALETTEENTRY = uintptr        /* wingdi.h:1025:18 */
type LPPALETTEENTRY = uintptr       /* wingdi.h:1025:33 */

type tagLOGPALETTE = struct {
	palVersion    WORD
	palNumEntries WORD
	palPalEntry   [1]PALETTEENTRY
} /* wingdi.h:1030:11 */

type LOGPALETTE = tagLOGPALETTE /* wingdi.h:1034:5 */
type PLOGPALETTE = uintptr      /* wingdi.h:1034:16 */
type NPLOGPALETTE = uintptr     /* wingdi.h:1034:29 */
type LPLOGPALETTE = uintptr     /* wingdi.h:1034:43 */

type tagLOGFONTA = struct {
	lfHeight         LONG
	lfWidth          LONG
	lfEscapement     LONG
	lfOrientation    LONG
	lfWeight         LONG
	lfItalic         BYTE
	lfUnderline      BYTE
	lfStrikeOut      BYTE
	lfCharSet        BYTE
	lfOutPrecision   BYTE
	lfClipPrecision  BYTE
	lfQuality        BYTE
	lfPitchAndFamily BYTE
	lfFaceName       [32]CHAR
} /* wingdi.h:1041:11 */

type LOGFONTA = tagLOGFONTA /* wingdi.h:1056:5 */
type PLOGFONTA = uintptr    /* wingdi.h:1056:14 */
type NPLOGFONTA = uintptr   /* wingdi.h:1056:25 */
type LPLOGFONTA = uintptr   /* wingdi.h:1056:37 */

type tagLOGFONTW = struct {
	lfHeight         LONG
	lfWidth          LONG
	lfEscapement     LONG
	lfOrientation    LONG
	lfWeight         LONG
	lfItalic         BYTE
	lfUnderline      BYTE
	lfStrikeOut      BYTE
	lfCharSet        BYTE
	lfOutPrecision   BYTE
	lfClipPrecision  BYTE
	lfQuality        BYTE
	lfPitchAndFamily BYTE
	lfFaceName       [32]WCHAR
} /* wingdi.h:1058:11 */

type LOGFONTW = tagLOGFONTW /* wingdi.h:1073:5 */
type PLOGFONTW = uintptr    /* wingdi.h:1073:14 */
type NPLOGFONTW = uintptr   /* wingdi.h:1073:25 */
type LPLOGFONTW = uintptr   /* wingdi.h:1073:37 */

type LOGFONT = LOGFONTW     /* wingdi.h:1075:3 */
type PLOGFONT = PLOGFONTW   /* wingdi.h:1076:3 */
type NPLOGFONT = NPLOGFONTW /* wingdi.h:1077:3 */
type LPLOGFONT = LPLOGFONTW /* wingdi.h:1078:3 */

type tagENUMLOGFONTA = struct {
	elfLogFont  LOGFONTA
	elfFullName [64]BYTE
	elfStyle    [32]BYTE
} /* wingdi.h:1084:11 */

type ENUMLOGFONTA = tagENUMLOGFONTA /* wingdi.h:1088:5 */
type LPENUMLOGFONTA = uintptr       /* wingdi.h:1088:18 */

type tagENUMLOGFONTW = struct {
	elfLogFont  LOGFONTW
	elfFullName [64]WCHAR
	elfStyle    [32]WCHAR
} /* wingdi.h:1090:11 */

type ENUMLOGFONTW = tagENUMLOGFONTW /* wingdi.h:1094:5 */
type LPENUMLOGFONTW = uintptr       /* wingdi.h:1094:18 */

type ENUMLOGFONT = ENUMLOGFONTW     /* wingdi.h:1096:3 */
type LPENUMLOGFONT = LPENUMLOGFONTW /* wingdi.h:1097:3 */

type tagENUMLOGFONTEXA = struct {
	elfLogFont  LOGFONTA
	elfFullName [64]BYTE
	elfStyle    [32]BYTE
	elfScript   [32]BYTE
} /* wingdi.h:1099:11 */

type ENUMLOGFONTEXA = tagENUMLOGFONTEXA /* wingdi.h:1104:5 */
type LPENUMLOGFONTEXA = uintptr         /* wingdi.h:1104:20 */

type tagENUMLOGFONTEXW = struct {
	elfLogFont  LOGFONTW
	elfFullName [64]WCHAR
	elfStyle    [32]WCHAR
	elfScript   [32]WCHAR
} /* wingdi.h:1106:11 */

type ENUMLOGFONTEXW = tagENUMLOGFONTEXW /* wingdi.h:1111:5 */
type LPENUMLOGFONTEXW = uintptr         /* wingdi.h:1111:20 */

type ENUMLOGFONTEX = ENUMLOGFONTEXW     /* wingdi.h:1113:3 */
type LPENUMLOGFONTEX = LPENUMLOGFONTEXW /* wingdi.h:1114:3 */

type tagPANOSE = struct {
	bFamilyType      BYTE
	bSerifStyle      BYTE
	bWeight          BYTE
	bProportion      BYTE
	bContrast        BYTE
	bStrokeVariation BYTE
	bArmStyle        BYTE
	bLetterform      BYTE
	bMidline         BYTE
	bXHeight         BYTE
} /* wingdi.h:1235:11 */

type PANOSE = tagPANOSE /* wingdi.h:1246:5 */
type LPPANOSE = uintptr /* wingdi.h:1246:12 */

type tagEXTLOGFONTA = struct {
	elfLogFont   LOGFONTA
	elfFullName  [64]BYTE
	elfStyle     [32]BYTE
	elfVersion   DWORD
	elfStyleSize DWORD
	elfMatch     DWORD
	elfReserved  DWORD
	elfVendorId  [4]BYTE
	elfCulture   DWORD
	elfPanose    PANOSE
	_            [2]byte
} /* wingdi.h:1356:11 */

type EXTLOGFONTA = tagEXTLOGFONTA /* wingdi.h:1367:5 */
type PEXTLOGFONTA = uintptr       /* wingdi.h:1367:17 */
type NPEXTLOGFONTA = uintptr      /* wingdi.h:1367:31 */
type LPEXTLOGFONTA = uintptr      /* wingdi.h:1367:46 */

type tagEXTLOGFONTW = struct {
	elfLogFont   LOGFONTW
	elfFullName  [64]WCHAR
	elfStyle     [32]WCHAR
	elfVersion   DWORD
	elfStyleSize DWORD
	elfMatch     DWORD
	elfReserved  DWORD
	elfVendorId  [4]BYTE
	elfCulture   DWORD
	elfPanose    PANOSE
	_            [2]byte
} /* wingdi.h:1369:11 */

type EXTLOGFONTW = tagEXTLOGFONTW /* wingdi.h:1380:5 */
type PEXTLOGFONTW = uintptr       /* wingdi.h:1380:17 */
type NPEXTLOGFONTW = uintptr      /* wingdi.h:1380:31 */
type LPEXTLOGFONTW = uintptr      /* wingdi.h:1380:46 */

type EXTLOGFONT = EXTLOGFONTW     /* wingdi.h:1382:3 */
type PEXTLOGFONT = PEXTLOGFONTW   /* wingdi.h:1383:3 */
type NPEXTLOGFONT = NPEXTLOGFONTW /* wingdi.h:1384:3 */
type LPEXTLOGFONT = LPEXTLOGFONTW /* wingdi.h:1385:3 */

type _devicemodeA = struct {
	dmDeviceName    [32]BYTE
	dmSpecVersion   WORD
	dmDriverVersion WORD
	dmSize          WORD
	dmDriverExtra   WORD
	dmFields        DWORD
	__44            struct {
		_   [0]uint32
		__0 struct {
			dmOrientation   int16
			dmPaperSize     int16
			dmPaperLength   int16
			dmPaperWidth    int16
			dmScale         int16
			dmCopies        int16
			dmDefaultSource int16
			dmPrintQuality  int16
		}
	}
	dmColor            int16
	dmDuplex           int16
	dmYResolution      int16
	dmTTOption         int16
	dmCollate          int16
	dmFormName         [32]BYTE
	dmLogPixels        WORD
	dmBitsPerPel       DWORD
	dmPelsWidth        DWORD
	dmPelsHeight       DWORD
	__116              struct{ dmDisplayFlags DWORD }
	dmDisplayFrequency DWORD
	dmICMMethod        DWORD
	dmICMIntent        DWORD
	dmMediaType        DWORD
	dmDitherType       DWORD
	dmReserved1        DWORD
	dmReserved2        DWORD
	dmPanningWidth     DWORD
	dmPanningHeight    DWORD
} /* wingdi.h:1669:11 */

type DEVMODEA = _devicemodeA /* wingdi.h:1716:5 */
type PDEVMODEA = uintptr     /* wingdi.h:1716:14 */
type NPDEVMODEA = uintptr    /* wingdi.h:1716:25 */
type LPDEVMODEA = uintptr    /* wingdi.h:1716:37 */

type _devicemodeW = struct {
	dmDeviceName    [32]WCHAR
	dmSpecVersion   WORD
	dmDriverVersion WORD
	dmSize          WORD
	dmDriverExtra   WORD
	dmFields        DWORD
	__76            struct {
		_   [0]uint32
		__0 struct {
			dmOrientation   int16
			dmPaperSize     int16
			dmPaperLength   int16
			dmPaperWidth    int16
			dmScale         int16
			dmCopies        int16
			dmDefaultSource int16
			dmPrintQuality  int16
		}
	}
	dmColor            int16
	dmDuplex           int16
	dmYResolution      int16
	dmTTOption         int16
	dmCollate          int16
	dmFormName         [32]WCHAR
	dmLogPixels        WORD
	dmBitsPerPel       DWORD
	dmPelsWidth        DWORD
	dmPelsHeight       DWORD
	__180              struct{ dmDisplayFlags DWORD }
	dmDisplayFrequency DWORD
	dmICMMethod        DWORD
	dmICMIntent        DWORD
	dmMediaType        DWORD
	dmDitherType       DWORD
	dmReserved1        DWORD
	dmReserved2        DWORD
	dmPanningWidth     DWORD
	dmPanningHeight    DWORD
} /* wingdi.h:1718:11 */

type DEVMODEW = _devicemodeW /* wingdi.h:1765:5 */
type PDEVMODEW = uintptr     /* wingdi.h:1765:14 */
type NPDEVMODEW = uintptr    /* wingdi.h:1765:25 */
type LPDEVMODEW = uintptr    /* wingdi.h:1765:37 */

type DEVMODE = DEVMODEW     /* wingdi.h:1767:3 */
type PDEVMODE = PDEVMODEW   /* wingdi.h:1768:3 */
type NPDEVMODE = NPDEVMODEW /* wingdi.h:1769:3 */
type LPDEVMODE = LPDEVMODEW /* wingdi.h:1770:3 */

type _DISPLAY_DEVICEA = struct {
	cb           DWORD
	DeviceName   [32]CHAR
	DeviceString [128]CHAR
	StateFlags   DWORD
	DeviceID     [128]CHAR
	DeviceKey    [128]CHAR
} /* wingdi.h:2021:11 */

type DISPLAY_DEVICEA = _DISPLAY_DEVICEA /* wingdi.h:2028:5 */
type PDISPLAY_DEVICEA = uintptr         /* wingdi.h:2028:21 */
type LPDISPLAY_DEVICEA = uintptr        /* wingdi.h:2028:39 */

type _DISPLAY_DEVICEW = struct {
	cb           DWORD
	DeviceName   [32]WCHAR
	DeviceString [128]WCHAR
	StateFlags   DWORD
	DeviceID     [128]WCHAR
	DeviceKey    [128]WCHAR
} /* wingdi.h:2030:11 */

type DISPLAY_DEVICEW = _DISPLAY_DEVICEW /* wingdi.h:2037:5 */
type PDISPLAY_DEVICEW = uintptr         /* wingdi.h:2037:21 */
type LPDISPLAY_DEVICEW = uintptr        /* wingdi.h:2037:39 */

type DISPLAY_DEVICE = DISPLAY_DEVICEW     /* wingdi.h:2039:3 */
type PDISPLAY_DEVICE = PDISPLAY_DEVICEW   /* wingdi.h:2040:3 */
type LPDISPLAY_DEVICE = LPDISPLAY_DEVICEW /* wingdi.h:2041:3 */

type _RGNDATAHEADER = struct {
	dwSize   DWORD
	iType    DWORD
	nCount   DWORD
	nRgnSize DWORD
	rcBound  RECT
} /* wingdi.h:2315:11 */

type RGNDATAHEADER = _RGNDATAHEADER /* wingdi.h:2321:5 */
type PRGNDATAHEADER = uintptr       /* wingdi.h:2321:19 */

type _RGNDATA = struct {
	rdh    RGNDATAHEADER
	Buffer [1]int8
	_      [3]byte
} /* wingdi.h:2323:11 */

type RGNDATA = _RGNDATA  /* wingdi.h:2326:5 */
type PRGNDATA = uintptr  /* wingdi.h:2326:13 */
type NPRGNDATA = uintptr /* wingdi.h:2326:23 */
type LPRGNDATA = uintptr /* wingdi.h:2326:34 */

type _ABC = struct {
	abcA int32
	abcB UINT
	abcC int32
} /* wingdi.h:2332:11 */

type ABC = _ABC      /* wingdi.h:2336:5 */
type PABC = uintptr  /* wingdi.h:2336:9 */
type NPABC = uintptr /* wingdi.h:2336:15 */
type LPABC = uintptr /* wingdi.h:2336:22 */

type _ABCFLOAT = struct {
	abcfA FLOAT
	abcfB FLOAT
	abcfC FLOAT
} /* wingdi.h:2338:11 */

type ABCFLOAT = _ABCFLOAT /* wingdi.h:2342:5 */
type PABCFLOAT = uintptr  /* wingdi.h:2342:14 */
type NPABCFLOAT = uintptr /* wingdi.h:2342:25 */
type LPABCFLOAT = uintptr /* wingdi.h:2342:37 */

type _OUTLINETEXTMETRICA = struct {
	otmSize                UINT
	otmTextMetrics         TEXTMETRICA
	otmFiller              BYTE
	otmPanoseNumber        PANOSE
	_                      [1]byte
	otmfsSelection         UINT
	otmfsType              UINT
	otmsCharSlopeRise      int32
	otmsCharSlopeRun       int32
	otmItalicAngle         int32
	otmEMSquare            UINT
	otmAscent              int32
	otmDescent             int32
	otmLineGap             UINT
	otmsCapEmHeight        UINT
	otmsXHeight            UINT
	otmrcFontBox           RECT
	otmMacAscent           int32
	otmMacDescent          int32
	otmMacLineGap          UINT
	otmusMinimumPPEM       UINT
	otmptSubscriptSize     POINT
	otmptSubscriptOffset   POINT
	otmptSuperscriptSize   POINT
	otmptSuperscriptOffset POINT
	otmsStrikeoutSize      UINT
	otmsStrikeoutPosition  int32
	otmsUnderscoreSize     int32
	otmsUnderscorePosition int32
	otmpFamilyName         PSTR
	otmpFaceName           PSTR
	otmpStyleName          PSTR
	otmpFullName           PSTR
} /* wingdi.h:2348:11 */

type OUTLINETEXTMETRICA = _OUTLINETEXTMETRICA /* wingdi.h:2381:5 */
type POUTLINETEXTMETRICA = uintptr            /* wingdi.h:2381:24 */
type NPOUTLINETEXTMETRICA = uintptr           /* wingdi.h:2381:45 */
type LPOUTLINETEXTMETRICA = uintptr           /* wingdi.h:2381:67 */

type _OUTLINETEXTMETRICW = struct {
	otmSize                UINT
	otmTextMetrics         TEXTMETRICW
	otmFiller              BYTE
	otmPanoseNumber        PANOSE
	_                      [1]byte
	otmfsSelection         UINT
	otmfsType              UINT
	otmsCharSlopeRise      int32
	otmsCharSlopeRun       int32
	otmItalicAngle         int32
	otmEMSquare            UINT
	otmAscent              int32
	otmDescent             int32
	otmLineGap             UINT
	otmsCapEmHeight        UINT
	otmsXHeight            UINT
	otmrcFontBox           RECT
	otmMacAscent           int32
	otmMacDescent          int32
	otmMacLineGap          UINT
	otmusMinimumPPEM       UINT
	otmptSubscriptSize     POINT
	otmptSubscriptOffset   POINT
	otmptSuperscriptSize   POINT
	otmptSuperscriptOffset POINT
	otmsStrikeoutSize      UINT
	otmsStrikeoutPosition  int32
	otmsUnderscoreSize     int32
	otmsUnderscorePosition int32
	otmpFamilyName         PSTR
	otmpFaceName           PSTR
	otmpStyleName          PSTR
	otmpFullName           PSTR
} /* wingdi.h:2383:11 */

type OUTLINETEXTMETRICW = _OUTLINETEXTMETRICW /* wingdi.h:2416:5 */
type POUTLINETEXTMETRICW = uintptr            /* wingdi.h:2416:24 */
type NPOUTLINETEXTMETRICW = uintptr           /* wingdi.h:2416:45 */
type LPOUTLINETEXTMETRICW = uintptr           /* wingdi.h:2416:67 */

type OUTLINETEXTMETRIC = OUTLINETEXTMETRICW     /* wingdi.h:2418:3 */
type POUTLINETEXTMETRIC = POUTLINETEXTMETRICW   /* wingdi.h:2419:3 */
type NPOUTLINETEXTMETRIC = NPOUTLINETEXTMETRICW /* wingdi.h:2420:3 */
type LPOUTLINETEXTMETRIC = LPOUTLINETEXTMETRICW /* wingdi.h:2421:3 */

type tagPOLYTEXTA = struct {
	x       int32
	y       int32
	n       UINT
	lpstr   LPCSTR
	uiFlags UINT
	rcl     RECT
	pdx     uintptr
} /* wingdi.h:2426:11 */

type POLYTEXTA = tagPOLYTEXTA /* wingdi.h:2434:5 */
type PPOLYTEXTA = uintptr     /* wingdi.h:2434:15 */
type NPPOLYTEXTA = uintptr    /* wingdi.h:2434:27 */
type LPPOLYTEXTA = uintptr    /* wingdi.h:2434:40 */

type tagPOLYTEXTW = struct {
	x       int32
	y       int32
	n       UINT
	lpstr   LPCWSTR
	uiFlags UINT
	rcl     RECT
	pdx     uintptr
} /* wingdi.h:2436:11 */

type POLYTEXTW = tagPOLYTEXTW /* wingdi.h:2444:5 */
type PPOLYTEXTW = uintptr     /* wingdi.h:2444:15 */
type NPPOLYTEXTW = uintptr    /* wingdi.h:2444:27 */
type LPPOLYTEXTW = uintptr    /* wingdi.h:2444:40 */

type POLYTEXT = POLYTEXTW     /* wingdi.h:2446:3 */
type PPOLYTEXT = PPOLYTEXTW   /* wingdi.h:2447:3 */
type NPPOLYTEXT = NPPOLYTEXTW /* wingdi.h:2448:3 */
type LPPOLYTEXT = LPPOLYTEXTW /* wingdi.h:2449:3 */

type _FIXED = struct {
	fract WORD
	value int16
} /* wingdi.h:2453:11 */

type FIXED = _FIXED /* wingdi.h:2456:5 */

type _MAT2 = struct {
	eM11 FIXED
	eM12 FIXED
	eM21 FIXED
	eM22 FIXED
} /* wingdi.h:2458:11 */

type MAT2 = _MAT2     /* wingdi.h:2463:5 */
type LPMAT2 = uintptr /* wingdi.h:2463:10 */

type _GLYPHMETRICS = struct {
	gmBlackBoxX     UINT
	gmBlackBoxY     UINT
	gmptGlyphOrigin POINT
	gmCellIncX      int16
	gmCellIncY      int16
} /* wingdi.h:2465:11 */

type GLYPHMETRICS = _GLYPHMETRICS /* wingdi.h:2471:5 */
type LPGLYPHMETRICS = uintptr     /* wingdi.h:2471:18 */

type tagPOINTFX = struct {
	x FIXED
	y FIXED
} /* wingdi.h:2491:11 */

type POINTFX = tagPOINTFX /* wingdi.h:2494:5 */
type LPPOINTFX = uintptr  /* wingdi.h:2494:13 */

type tagTTPOLYCURVE = struct {
	wType WORD
	cpfx  WORD
	apfx  [1]POINTFX
} /* wingdi.h:2496:11 */

type TTPOLYCURVE = tagTTPOLYCURVE /* wingdi.h:2500:5 */
type LPTTPOLYCURVE = uintptr      /* wingdi.h:2500:17 */

type tagTTPOLYGONHEADER = struct {
	cb       DWORD
	dwType   DWORD
	pfxStart POINTFX
} /* wingdi.h:2502:11 */

type TTPOLYGONHEADER = tagTTPOLYGONHEADER /* wingdi.h:2506:5 */
type LPTTPOLYGONHEADER = uintptr          /* wingdi.h:2506:21 */

type tagGCP_RESULTSA = struct {
	lStructSize DWORD
	lpOutString LPSTR
	lpOrder     uintptr
	lpDx        uintptr
	lpCaretPos  uintptr
	lpClass     LPSTR
	lpGlyphs    LPWSTR
	nGlyphs     UINT
	nMaxFit     int32
} /* wingdi.h:2549:11 */

type GCP_RESULTSA = tagGCP_RESULTSA /* wingdi.h:2559:5 */
type LPGCP_RESULTSA = uintptr       /* wingdi.h:2559:18 */
type tagGCP_RESULTSW = struct {
	lStructSize DWORD
	lpOutString LPWSTR
	lpOrder     uintptr
	lpDx        uintptr
	lpCaretPos  uintptr
	lpClass     LPSTR
	lpGlyphs    LPWSTR
	nGlyphs     UINT
	nMaxFit     int32
} /* wingdi.h:2560:11 */

type GCP_RESULTSW = tagGCP_RESULTSW /* wingdi.h:2570:5 */
type LPGCP_RESULTSW = uintptr       /* wingdi.h:2570:18 */

type GCP_RESULTS = GCP_RESULTSW     /* wingdi.h:2572:3 */
type LPGCP_RESULTS = LPGCP_RESULTSW /* wingdi.h:2573:3 */

type _RASTERIZER_STATUS = struct {
	nSize       int16
	wFlags      int16
	nLanguageID int16
} /* wingdi.h:2575:11 */

type RASTERIZER_STATUS = _RASTERIZER_STATUS /* wingdi.h:2579:5 */
type LPRASTERIZER_STATUS = uintptr          /* wingdi.h:2579:23 */

type tagPIXELFORMATDESCRIPTOR = struct {
	nSize           WORD
	nVersion        WORD
	dwFlags         DWORD
	iPixelType      BYTE
	cColorBits      BYTE
	cRedBits        BYTE
	cRedShift       BYTE
	cGreenBits      BYTE
	cGreenShift     BYTE
	cBlueBits       BYTE
	cBlueShift      BYTE
	cAlphaBits      BYTE
	cAlphaShift     BYTE
	cAccumBits      BYTE
	cAccumRedBits   BYTE
	cAccumGreenBits BYTE
	cAccumBlueBits  BYTE
	cAccumAlphaBits BYTE
	cDepthBits      BYTE
	cStencilBits    BYTE
	cAuxBuffers     BYTE
	iLayerType      BYTE
	bReserved       BYTE
	dwLayerMask     DWORD
	dwVisibleMask   DWORD
	dwDamageMask    DWORD
} /* wingdi.h:2586:11 */

type PIXELFORMATDESCRIPTOR = tagPIXELFORMATDESCRIPTOR /* wingdi.h:2613:5 */
type PPIXELFORMATDESCRIPTOR = uintptr                 /* wingdi.h:2613:27 */
type LPPIXELFORMATDESCRIPTOR = uintptr                /* wingdi.h:2613:51 */

type OLDFONTENUMPROCA = uintptr /* wingdi.h:2646:15 */
type OLDFONTENUMPROCW = uintptr /* wingdi.h:2647:15 */

type FONTENUMPROCA = OLDFONTENUMPROCA /* wingdi.h:2657:28 */
type FONTENUMPROCW = OLDFONTENUMPROCW /* wingdi.h:2658:28 */

type FONTENUMPROC = FONTENUMPROCW /* wingdi.h:2660:3 */

type GOBJENUMPROC = uintptr /* wingdi.h:2662:15 */
type LINEDDAPROC = uintptr  /* wingdi.h:2663:16 */

type LPFNDEVMODE = uintptr /* wingdi.h:2725:16 */
type LPFNDEVCAPS = uintptr /* wingdi.h:2726:17 */

type tagWCRANGE = struct {
	wcLow   WCHAR
	cGlyphs USHORT
} /* wingdi.h:2906:11 */

type WCRANGE = tagWCRANGE /* wingdi.h:2909:5 */
type PWCRANGE = uintptr   /* wingdi.h:2909:13 */
type LPWCRANGE = uintptr  /* wingdi.h:2909:23 */

type tagGLYPHSET = struct {
	cbThis           DWORD
	flAccel          DWORD
	cGlyphsSupported DWORD
	cRanges          DWORD
	ranges           [1]WCRANGE
} /* wingdi.h:2911:11 */

type GLYPHSET = tagGLYPHSET /* wingdi.h:2917:5 */
type PGLYPHSET = uintptr    /* wingdi.h:2917:14 */
type LPGLYPHSET = uintptr   /* wingdi.h:2917:25 */

type tagDESIGNVECTOR = struct {
	dvReserved DWORD
	dvNumAxes  DWORD
	dvValues   [16]LONG
} /* wingdi.h:2937:11 */

type DESIGNVECTOR = tagDESIGNVECTOR /* wingdi.h:2941:5 */
type PDESIGNVECTOR = uintptr        /* wingdi.h:2941:18 */
type LPDESIGNVECTOR = uintptr       /* wingdi.h:2941:33 */

type tagAXISINFOA = struct {
	axMinValue LONG
	axMaxValue LONG
	axAxisName [16]BYTE
} /* wingdi.h:2958:11 */

type AXISINFOA = tagAXISINFOA /* wingdi.h:2962:5 */
type PAXISINFOA = uintptr     /* wingdi.h:2962:15 */
type LPAXISINFOA = uintptr    /* wingdi.h:2962:27 */

type tagAXISINFOW = struct {
	axMinValue LONG
	axMaxValue LONG
	axAxisName [16]WCHAR
} /* wingdi.h:2964:11 */

type AXISINFOW = tagAXISINFOW /* wingdi.h:2968:5 */
type PAXISINFOW = uintptr     /* wingdi.h:2968:15 */
type LPAXISINFOW = uintptr    /* wingdi.h:2968:27 */

type AXISINFO = AXISINFOW     /* wingdi.h:2970:3 */
type PAXISINFO = PAXISINFOW   /* wingdi.h:2971:3 */
type LPAXISINFO = LPAXISINFOW /* wingdi.h:2972:3 */

type tagAXESLISTA = struct {
	axlReserved DWORD
	axlNumAxes  DWORD
	axlAxisInfo [16]AXISINFOA
} /* wingdi.h:2974:11 */

type AXESLISTA = tagAXESLISTA /* wingdi.h:2978:5 */
type PAXESLISTA = uintptr     /* wingdi.h:2978:15 */
type LPAXESLISTA = uintptr    /* wingdi.h:2978:27 */

type tagAXESLISTW = struct {
	axlReserved DWORD
	axlNumAxes  DWORD
	axlAxisInfo [16]AXISINFOW
} /* wingdi.h:2980:11 */

type AXESLISTW = tagAXESLISTW /* wingdi.h:2984:5 */
type PAXESLISTW = uintptr     /* wingdi.h:2984:15 */
type LPAXESLISTW = uintptr    /* wingdi.h:2984:27 */

type AXESLIST = AXESLISTW     /* wingdi.h:2986:3 */
type PAXESLIST = PAXESLISTW   /* wingdi.h:2987:3 */
type LPAXESLIST = LPAXESLISTW /* wingdi.h:2988:3 */

type tagENUMLOGFONTEXDVA = struct {
	elfEnumLogfontEx ENUMLOGFONTEXA
	elfDesignVector  DESIGNVECTOR
} /* wingdi.h:2990:11 */

type ENUMLOGFONTEXDVA = tagENUMLOGFONTEXDVA /* wingdi.h:2993:5 */
type PENUMLOGFONTEXDVA = uintptr            /* wingdi.h:2993:22 */
type LPENUMLOGFONTEXDVA = uintptr           /* wingdi.h:2993:41 */

type tagENUMLOGFONTEXDVW = struct {
	elfEnumLogfontEx ENUMLOGFONTEXW
	elfDesignVector  DESIGNVECTOR
} /* wingdi.h:2995:11 */

type ENUMLOGFONTEXDVW = tagENUMLOGFONTEXDVW /* wingdi.h:2998:5 */
type PENUMLOGFONTEXDVW = uintptr            /* wingdi.h:2998:22 */
type LPENUMLOGFONTEXDVW = uintptr           /* wingdi.h:2998:41 */

type ENUMLOGFONTEXDV = ENUMLOGFONTEXDVW     /* wingdi.h:3000:3 */
type PENUMLOGFONTEXDV = PENUMLOGFONTEXDVW   /* wingdi.h:3001:3 */
type LPENUMLOGFONTEXDV = LPENUMLOGFONTEXDVW /* wingdi.h:3002:3 */

type tagENUMTEXTMETRICA = struct {
	etmNewTextMetricEx NEWTEXTMETRICEXA
	etmAxesList        AXESLISTA
} /* wingdi.h:3010:11 */

type ENUMTEXTMETRICA = tagENUMTEXTMETRICA /* wingdi.h:3013:5 */
type PENUMTEXTMETRICA = uintptr           /* wingdi.h:3013:21 */
type LPENUMTEXTMETRICA = uintptr          /* wingdi.h:3013:39 */
type tagENUMTEXTMETRICW = struct {
	etmNewTextMetricEx NEWTEXTMETRICEXW
	etmAxesList        AXESLISTW
} /* wingdi.h:3014:11 */

type ENUMTEXTMETRICW = tagENUMTEXTMETRICW /* wingdi.h:3018:5 */
type PENUMTEXTMETRICW = uintptr           /* wingdi.h:3018:21 */
type LPENUMTEXTMETRICW = uintptr          /* wingdi.h:3018:39 */

type ENUMTEXTMETRIC = ENUMTEXTMETRICW     /* wingdi.h:3020:3 */
type PENUMTEXTMETRIC = PENUMTEXTMETRICW   /* wingdi.h:3021:3 */
type LPENUMTEXTMETRIC = LPENUMTEXTMETRICW /* wingdi.h:3022:3 */

type COLOR16 = USHORT /* wingdi.h:3124:18 */

type _TRIVERTEX = struct {
	x     LONG
	y     LONG
	Red   COLOR16
	Green COLOR16
	Blue  COLOR16
	Alpha COLOR16
} /* wingdi.h:3126:11 */

type TRIVERTEX = _TRIVERTEX /* wingdi.h:3133:5 */
type PTRIVERTEX = uintptr   /* wingdi.h:3133:15 */
type LPTRIVERTEX = uintptr  /* wingdi.h:3133:27 */
type _GRADIENT_TRIANGLE = struct {
	Vertex1 ULONG
	Vertex2 ULONG
	Vertex3 ULONG
} /* wingdi.h:3136:11 */

type GRADIENT_TRIANGLE = _GRADIENT_TRIANGLE /* wingdi.h:3140:5 */
type PGRADIENT_TRIANGLE = uintptr           /* wingdi.h:3140:23 */
type LPGRADIENT_TRIANGLE = uintptr          /* wingdi.h:3140:43 */

type _GRADIENT_RECT = struct {
	UpperLeft  ULONG
	LowerRight ULONG
} /* wingdi.h:3142:11 */

type GRADIENT_RECT = _GRADIENT_RECT /* wingdi.h:3145:5 */
type PGRADIENT_RECT = uintptr       /* wingdi.h:3145:19 */
type LPGRADIENT_RECT = uintptr      /* wingdi.h:3145:35 */
type _BLENDFUNCTION = struct {
	BlendOp             BYTE
	BlendFlags          BYTE
	SourceConstantAlpha BYTE
	AlphaFormat         BYTE
} /* wingdi.h:3148:11 */

type BLENDFUNCTION = _BLENDFUNCTION /* wingdi.h:3153:5 */
type PBLENDFUNCTION = uintptr       /* wingdi.h:3153:19 */

type MFENUMPROC = uintptr /* wingdi.h:3181:15 */

type ENHMFENUMPROC = uintptr /* wingdi.h:3185:15 */

type tagDIBSECTION = struct {
	dsBm        BITMAP
	dsBmih      BITMAPINFOHEADER
	dsBitfields [3]DWORD
	dshSection  HANDLE
	dsOffset    DWORD
} /* wingdi.h:3217:11 */

type DIBSECTION = tagDIBSECTION /* wingdi.h:3223:5 */
type LPDIBSECTION = uintptr     /* wingdi.h:3223:16 */
type PDIBSECTION = uintptr      /* wingdi.h:3223:30 */

type tagCOLORADJUSTMENT = struct {
	caSize            WORD
	caFlags           WORD
	caIlluminantIndex WORD
	caRedGamma        WORD
	caGreenGamma      WORD
	caBlueGamma       WORD
	caReferenceBlack  WORD
	caReferenceWhite  WORD
	caContrast        SHORT
	caBrightness      SHORT
	caColorfulness    SHORT
	caRedGreenTint    SHORT
} /* wingdi.h:3265:11 */

type COLORADJUSTMENT = tagCOLORADJUSTMENT /* wingdi.h:3278:5 */
type PCOLORADJUSTMENT = uintptr           /* wingdi.h:3278:21 */
type LPCOLORADJUSTMENT = uintptr          /* wingdi.h:3278:39 */

type ABORTPROC = uintptr /* wingdi.h:3284:19 */

type _DOCINFOA = struct {
	cbSize       int32
	lpszDocName  LPCSTR
	lpszOutput   LPCSTR
	lpszDatatype LPCSTR
	fwType       DWORD
} /* wingdi.h:3286:11 */

type DOCINFOA = _DOCINFOA /* wingdi.h:3292:5 */
type LPDOCINFOA = uintptr /* wingdi.h:3292:14 */

type _DOCINFOW = struct {
	cbSize       int32
	lpszDocName  LPCWSTR
	lpszOutput   LPCWSTR
	lpszDatatype LPCWSTR
	fwType       DWORD
} /* wingdi.h:3294:11 */

type DOCINFOW = _DOCINFOW /* wingdi.h:3300:5 */
type LPDOCINFOW = uintptr /* wingdi.h:3300:14 */

type DOCINFO = DOCINFOW     /* wingdi.h:3302:3 */
type LPDOCINFO = LPDOCINFOW /* wingdi.h:3303:3 */

type tagKERNINGPAIR = struct {
	wFirst      WORD
	wSecond     WORD
	iKernAmount int32
} /* wingdi.h:3373:11 */

type KERNINGPAIR = tagKERNINGPAIR /* wingdi.h:3377:5 */
type LPKERNINGPAIR = uintptr      /* wingdi.h:3377:17 */

type ICMENUMPROCA = uintptr /* wingdi.h:3395:15 */
type ICMENUMPROCW = uintptr /* wingdi.h:3396:15 */

type tagEMR = struct {
	iType DWORD
	nSize DWORD
} /* wingdi.h:3561:11 */

type EMR = tagEMR   /* wingdi.h:3564:5 */
type PEMR = uintptr /* wingdi.h:3564:9 */

type tagEMRTEXT = struct {
	ptlReference POINTL
	nChars       DWORD
	offString    DWORD
	fOptions     DWORD
	rcl          RECTL
	offDx        DWORD
} /* wingdi.h:3566:11 */

type EMRTEXT = tagEMRTEXT /* wingdi.h:3573:5 */
type PEMRTEXT = uintptr   /* wingdi.h:3573:13 */

type tagABORTPATH = struct{ emr EMR } /* wingdi.h:3575:11 */

type EMRABORTPATH = tagABORTPATH      /* wingdi.h:3577:5 */
type PEMRABORTPATH = uintptr          /* wingdi.h:3577:18 */
type EMRBEGINPATH = tagABORTPATH      /* wingdi.h:3577:33 */
type PEMRBEGINPATH = uintptr          /* wingdi.h:3577:46 */
type EMRENDPATH = tagABORTPATH        /* wingdi.h:3577:61 */
type PEMRENDPATH = uintptr            /* wingdi.h:3577:72 */
type EMRCLOSEFIGURE = tagABORTPATH    /* wingdi.h:3577:85 */
type PEMRCLOSEFIGURE = uintptr        /* wingdi.h:3577:100 */
type EMRFLATTENPATH = tagABORTPATH    /* wingdi.h:3577:117 */
type PEMRFLATTENPATH = uintptr        /* wingdi.h:3577:132 */
type EMRWIDENPATH = tagABORTPATH      /* wingdi.h:3577:149 */
type PEMRWIDENPATH = uintptr          /* wingdi.h:3577:162 */
type EMRSETMETARGN = tagABORTPATH     /* wingdi.h:3577:177 */
type PEMRSETMETARGN = uintptr         /* wingdi.h:3577:191 */
type EMRSAVEDC = tagABORTPATH         /* wingdi.h:3577:207 */
type PEMRSAVEDC = uintptr             /* wingdi.h:3577:217 */
type EMRREALIZEPALETTE = tagABORTPATH /* wingdi.h:3577:229 */
type PEMRREALIZEPALETTE = uintptr     /* wingdi.h:3577:247 */

type tagEMRSELECTCLIPPATH = struct {
	emr   EMR
	iMode DWORD
} /* wingdi.h:3579:11 */

type EMRSELECTCLIPPATH = tagEMRSELECTCLIPPATH    /* wingdi.h:3582:5 */
type PEMRSELECTCLIPPATH = uintptr                /* wingdi.h:3582:23 */
type EMRSETBKMODE = tagEMRSELECTCLIPPATH         /* wingdi.h:3582:43 */
type PEMRSETBKMODE = uintptr                     /* wingdi.h:3582:56 */
type EMRSETMAPMODE = tagEMRSELECTCLIPPATH        /* wingdi.h:3582:71 */
type PEMRSETMAPMODE = uintptr                    /* wingdi.h:3582:85 */
type EMRSETLAYOUT = tagEMRSELECTCLIPPATH         /* wingdi.h:3582:101 */
type PEMRSETLAYOUT = uintptr                     /* wingdi.h:3582:114 */
type EMRSETPOLYFILLMODE = tagEMRSELECTCLIPPATH   /* wingdi.h:3583:5 */
type PEMRSETPOLYFILLMODE = uintptr               /* wingdi.h:3583:24 */
type EMRSETROP2 = tagEMRSELECTCLIPPATH           /* wingdi.h:3583:45 */
type PEMRSETROP2 = uintptr                       /* wingdi.h:3583:56 */
type EMRSETSTRETCHBLTMODE = tagEMRSELECTCLIPPATH /* wingdi.h:3583:69 */
type PEMRSETSTRETCHBLTMODE = uintptr             /* wingdi.h:3583:90 */
type EMRSETICMMODE = tagEMRSELECTCLIPPATH        /* wingdi.h:3583:113 */
type PEMRSETICMMODE = uintptr                    /* wingdi.h:3584:5 */
type EMRSETTEXTALIGN = tagEMRSELECTCLIPPATH      /* wingdi.h:3584:21 */
type PEMRSETTEXTALIGN = uintptr                  /* wingdi.h:3584:37 */

type tagEMRSETMITERLIMIT = struct {
	emr         EMR
	eMiterLimit FLOAT
} /* wingdi.h:3586:11 */

type EMRSETMITERLIMIT = tagEMRSETMITERLIMIT /* wingdi.h:3589:5 */
type PEMRSETMITERLIMIT = uintptr            /* wingdi.h:3589:22 */

type tagEMRRESTOREDC = struct {
	emr       EMR
	iRelative LONG
} /* wingdi.h:3591:11 */

type EMRRESTOREDC = tagEMRRESTOREDC /* wingdi.h:3594:5 */
type PEMRRESTOREDC = uintptr        /* wingdi.h:3594:18 */

type tagEMRSETARCDIRECTION = struct {
	emr           EMR
	iArcDirection DWORD
} /* wingdi.h:3596:11 */

type EMRSETARCDIRECTION = tagEMRSETARCDIRECTION /* wingdi.h:3600:5 */
type PEMRSETARCDIRECTION = uintptr              /* wingdi.h:3600:24 */

type tagEMRSETMAPPERFLAGS = struct {
	emr     EMR
	dwFlags DWORD
} /* wingdi.h:3602:11 */

type EMRSETMAPPERFLAGS = tagEMRSETMAPPERFLAGS /* wingdi.h:3605:5 */
type PEMRSETMAPPERFLAGS = uintptr             /* wingdi.h:3605:23 */

type tagEMRSETTEXTCOLOR = struct {
	emr     EMR
	crColor COLORREF
} /* wingdi.h:3607:11 */

type EMRSETBKCOLOR = tagEMRSETTEXTCOLOR   /* wingdi.h:3610:5 */
type PEMRSETBKCOLOR = uintptr             /* wingdi.h:3610:19 */
type EMRSETTEXTCOLOR = tagEMRSETTEXTCOLOR /* wingdi.h:3610:35 */
type PEMRSETTEXTCOLOR = uintptr           /* wingdi.h:3610:51 */

type tagEMRSELECTOBJECT = struct {
	emr      EMR
	ihObject DWORD
} /* wingdi.h:3612:11 */

type EMRSELECTOBJECT = tagEMRSELECTOBJECT /* wingdi.h:3615:5 */
type PEMRSELECTOBJECT = uintptr           /* wingdi.h:3615:21 */
type EMRDELETEOBJECT = tagEMRSELECTOBJECT /* wingdi.h:3615:39 */
type PEMRDELETEOBJECT = uintptr           /* wingdi.h:3615:55 */

type tagEMRSELECTPALETTE = struct {
	emr   EMR
	ihPal DWORD
} /* wingdi.h:3617:11 */

type EMRSELECTPALETTE = tagEMRSELECTPALETTE /* wingdi.h:3620:5 */
type PEMRSELECTPALETTE = uintptr            /* wingdi.h:3620:22 */

type tagEMRRESIZEPALETTE = struct {
	emr      EMR
	ihPal    DWORD
	cEntries DWORD
} /* wingdi.h:3622:11 */

type EMRRESIZEPALETTE = tagEMRRESIZEPALETTE /* wingdi.h:3626:5 */
type PEMRRESIZEPALETTE = uintptr            /* wingdi.h:3626:22 */

type tagEMRSETPALETTEENTRIES = struct {
	emr         EMR
	ihPal       DWORD
	iStart      DWORD
	cEntries    DWORD
	aPalEntries [1]PALETTEENTRY
} /* wingdi.h:3628:11 */

type EMRSETPALETTEENTRIES = tagEMRSETPALETTEENTRIES /* wingdi.h:3634:5 */
type PEMRSETPALETTEENTRIES = uintptr                /* wingdi.h:3634:26 */

type tagEMRSETCOLORADJUSTMENT = struct {
	emr             EMR
	ColorAdjustment COLORADJUSTMENT
} /* wingdi.h:3636:11 */

type EMRSETCOLORADJUSTMENT = tagEMRSETCOLORADJUSTMENT /* wingdi.h:3639:5 */
type PEMRSETCOLORADJUSTMENT = uintptr                 /* wingdi.h:3639:27 */

type tagEMRGDICOMMENT = struct {
	emr    EMR
	cbData DWORD
	Data   [1]BYTE
	_      [3]byte
} /* wingdi.h:3641:11 */

type EMRGDICOMMENT = tagEMRGDICOMMENT /* wingdi.h:3645:5 */
type PEMRGDICOMMENT = uintptr         /* wingdi.h:3645:19 */

type tagEMREOF = struct {
	emr           EMR
	nPalEntries   DWORD
	offPalEntries DWORD
	nSizeLast     DWORD
} /* wingdi.h:3647:11 */

type EMREOF = tagEMREOF /* wingdi.h:3652:5 */
type PEMREOF = uintptr  /* wingdi.h:3652:12 */

type tagEMRLINETO = struct {
	emr EMR
	ptl POINTL
} /* wingdi.h:3654:11 */

type EMRLINETO = tagEMRLINETO   /* wingdi.h:3657:5 */
type PEMRLINETO = uintptr       /* wingdi.h:3657:15 */
type EMRMOVETOEX = tagEMRLINETO /* wingdi.h:3657:27 */
type PEMRMOVETOEX = uintptr     /* wingdi.h:3657:39 */

type tagEMROFFSETCLIPRGN = struct {
	emr       EMR
	ptlOffset POINTL
} /* wingdi.h:3659:11 */

type EMROFFSETCLIPRGN = tagEMROFFSETCLIPRGN /* wingdi.h:3662:5 */
type PEMROFFSETCLIPRGN = uintptr            /* wingdi.h:3662:22 */

type tagEMRFILLPATH = struct {
	emr       EMR
	rclBounds RECTL
} /* wingdi.h:3664:11 */

type EMRFILLPATH = tagEMRFILLPATH          /* wingdi.h:3667:5 */
type PEMRFILLPATH = uintptr                /* wingdi.h:3667:17 */
type EMRSTROKEANDFILLPATH = tagEMRFILLPATH /* wingdi.h:3667:31 */
type PEMRSTROKEANDFILLPATH = uintptr       /* wingdi.h:3667:52 */
type EMRSTROKEPATH = tagEMRFILLPATH        /* wingdi.h:3667:75 */
type PEMRSTROKEPATH = uintptr              /* wingdi.h:3667:89 */

type tagEMREXCLUDECLIPRECT = struct {
	emr     EMR
	rclClip RECTL
} /* wingdi.h:3669:11 */

type EMREXCLUDECLIPRECT = tagEMREXCLUDECLIPRECT   /* wingdi.h:3672:5 */
type PEMREXCLUDECLIPRECT = uintptr                /* wingdi.h:3672:24 */
type EMRINTERSECTCLIPRECT = tagEMREXCLUDECLIPRECT /* wingdi.h:3672:45 */
type PEMRINTERSECTCLIPRECT = uintptr              /* wingdi.h:3672:66 */

type tagEMRSETVIEWPORTORGEX = struct {
	emr       EMR
	ptlOrigin POINTL
} /* wingdi.h:3674:11 */

type EMRSETVIEWPORTORGEX = tagEMRSETVIEWPORTORGEX /* wingdi.h:3677:5 */
type PEMRSETVIEWPORTORGEX = uintptr               /* wingdi.h:3677:25 */
type EMRSETWINDOWORGEX = tagEMRSETVIEWPORTORGEX   /* wingdi.h:3677:47 */
type PEMRSETWINDOWORGEX = uintptr                 /* wingdi.h:3677:65 */
type EMRSETBRUSHORGEX = tagEMRSETVIEWPORTORGEX    /* wingdi.h:3677:85 */
type PEMRSETBRUSHORGEX = uintptr                  /* wingdi.h:3677:102 */

type tagEMRSETVIEWPORTEXTEX = struct {
	emr       EMR
	szlExtent SIZEL
} /* wingdi.h:3679:11 */

type EMRSETVIEWPORTEXTEX = tagEMRSETVIEWPORTEXTEX /* wingdi.h:3682:5 */
type PEMRSETVIEWPORTEXTEX = uintptr               /* wingdi.h:3682:25 */
type EMRSETWINDOWEXTEX = tagEMRSETVIEWPORTEXTEX   /* wingdi.h:3682:47 */
type PEMRSETWINDOWEXTEX = uintptr                 /* wingdi.h:3682:65 */

type tagEMRSCALEVIEWPORTEXTEX = struct {
	emr    EMR
	xNum   LONG
	xDenom LONG
	yNum   LONG
	yDenom LONG
} /* wingdi.h:3684:11 */

type EMRSCALEVIEWPORTEXTEX = tagEMRSCALEVIEWPORTEXTEX /* wingdi.h:3690:5 */
type PEMRSCALEVIEWPORTEXTEX = uintptr                 /* wingdi.h:3690:27 */
type EMRSCALEWINDOWEXTEX = tagEMRSCALEVIEWPORTEXTEX   /* wingdi.h:3690:51 */
type PEMRSCALEWINDOWEXTEX = uintptr                   /* wingdi.h:3690:71 */

type tagEMRSETWORLDTRANSFORM = struct {
	emr   EMR
	xform XFORM
} /* wingdi.h:3692:11 */

type EMRSETWORLDTRANSFORM = tagEMRSETWORLDTRANSFORM /* wingdi.h:3695:5 */
type PEMRSETWORLDTRANSFORM = uintptr                /* wingdi.h:3695:26 */

type tagEMRMODIFYWORLDTRANSFORM = struct {
	emr   EMR
	xform XFORM
	iMode DWORD
} /* wingdi.h:3697:11 */

type EMRMODIFYWORLDTRANSFORM = tagEMRMODIFYWORLDTRANSFORM /* wingdi.h:3701:5 */
type PEMRMODIFYWORLDTRANSFORM = uintptr                   /* wingdi.h:3701:29 */

type tagEMRSETPIXELV = struct {
	emr      EMR
	ptlPixel POINTL
	crColor  COLORREF
} /* wingdi.h:3703:11 */

type EMRSETPIXELV = tagEMRSETPIXELV /* wingdi.h:3707:5 */
type PEMRSETPIXELV = uintptr        /* wingdi.h:3707:18 */

type tagEMREXTFLOODFILL = struct {
	emr      EMR
	ptlStart POINTL
	crColor  COLORREF
	iMode    DWORD
} /* wingdi.h:3709:11 */

type EMREXTFLOODFILL = tagEMREXTFLOODFILL /* wingdi.h:3714:5 */
type PEMREXTFLOODFILL = uintptr           /* wingdi.h:3714:21 */

type tagEMRELLIPSE = struct {
	emr    EMR
	rclBox RECTL
} /* wingdi.h:3716:11 */

type EMRELLIPSE = tagEMRELLIPSE   /* wingdi.h:3719:5 */
type PEMRELLIPSE = uintptr        /* wingdi.h:3719:16 */
type EMRRECTANGLE = tagEMRELLIPSE /* wingdi.h:3719:29 */
type PEMRRECTANGLE = uintptr      /* wingdi.h:3719:42 */

type tagEMRROUNDRECT = struct {
	emr       EMR
	rclBox    RECTL
	szlCorner SIZEL
} /* wingdi.h:3721:11 */

type EMRROUNDRECT = tagEMRROUNDRECT /* wingdi.h:3725:5 */
type PEMRROUNDRECT = uintptr        /* wingdi.h:3725:18 */

type tagEMRARC = struct {
	emr      EMR
	rclBox   RECTL
	ptlStart POINTL
	ptlEnd   POINTL
} /* wingdi.h:3727:11 */

type EMRARC = tagEMRARC   /* wingdi.h:3732:5 */
type PEMRARC = uintptr    /* wingdi.h:3732:12 */
type EMRARCTO = tagEMRARC /* wingdi.h:3732:21 */
type PEMRARCTO = uintptr  /* wingdi.h:3732:30 */
type EMRCHORD = tagEMRARC /* wingdi.h:3732:41 */
type PEMRCHORD = uintptr  /* wingdi.h:3732:50 */
type EMRPIE = tagEMRARC   /* wingdi.h:3732:61 */
type PEMRPIE = uintptr    /* wingdi.h:3732:68 */

type tagEMRANGLEARC = struct {
	emr         EMR
	ptlCenter   POINTL
	nRadius     DWORD
	eStartAngle FLOAT
	eSweepAngle FLOAT
} /* wingdi.h:3734:11 */

type EMRANGLEARC = tagEMRANGLEARC /* wingdi.h:3740:5 */
type PEMRANGLEARC = uintptr       /* wingdi.h:3740:17 */

type tagEMRPOLYLINE = struct {
	emr       EMR
	rclBounds RECTL
	cptl      DWORD
	aptl      [1]POINTL
} /* wingdi.h:3742:11 */

type EMRPOLYLINE = tagEMRPOLYLINE     /* wingdi.h:3747:5 */
type PEMRPOLYLINE = uintptr           /* wingdi.h:3747:17 */
type EMRPOLYBEZIER = tagEMRPOLYLINE   /* wingdi.h:3747:31 */
type PEMRPOLYBEZIER = uintptr         /* wingdi.h:3747:45 */
type EMRPOLYGON = tagEMRPOLYLINE      /* wingdi.h:3747:61 */
type PEMRPOLYGON = uintptr            /* wingdi.h:3747:72 */
type EMRPOLYBEZIERTO = tagEMRPOLYLINE /* wingdi.h:3747:85 */
type PEMRPOLYBEZIERTO = uintptr       /* wingdi.h:3747:101 */
type EMRPOLYLINETO = tagEMRPOLYLINE   /* wingdi.h:3747:119 */
type PEMRPOLYLINETO = uintptr         /* wingdi.h:3747:133 */

type tagEMRPOLYLINE16 = struct {
	emr       EMR
	rclBounds RECTL
	cpts      DWORD
	apts      [1]POINTS
} /* wingdi.h:3749:11 */

type EMRPOLYLINE16 = tagEMRPOLYLINE16     /* wingdi.h:3754:5 */
type PEMRPOLYLINE16 = uintptr             /* wingdi.h:3754:19 */
type EMRPOLYBEZIER16 = tagEMRPOLYLINE16   /* wingdi.h:3754:35 */
type PEMRPOLYBEZIER16 = uintptr           /* wingdi.h:3754:51 */
type EMRPOLYGON16 = tagEMRPOLYLINE16      /* wingdi.h:3754:69 */
type PEMRPOLYGON16 = uintptr              /* wingdi.h:3754:82 */
type EMRPOLYBEZIERTO16 = tagEMRPOLYLINE16 /* wingdi.h:3754:97 */
type PEMRPOLYBEZIERTO16 = uintptr         /* wingdi.h:3754:115 */
type EMRPOLYLINETO16 = tagEMRPOLYLINE16   /* wingdi.h:3754:135 */
type PEMRPOLYLINETO16 = uintptr           /* wingdi.h:3754:151 */

type tagEMRPOLYDRAW = struct {
	emr       EMR
	rclBounds RECTL
	cptl      DWORD
	aptl      [1]POINTL
	abTypes   [1]BYTE
	_         [3]byte
} /* wingdi.h:3756:11 */

type EMRPOLYDRAW = tagEMRPOLYDRAW /* wingdi.h:3762:5 */
type PEMRPOLYDRAW = uintptr       /* wingdi.h:3762:17 */

type tagEMRPOLYDRAW16 = struct {
	emr       EMR
	rclBounds RECTL
	cpts      DWORD
	apts      [1]POINTS
	abTypes   [1]BYTE
	_         [3]byte
} /* wingdi.h:3764:11 */

type EMRPOLYDRAW16 = tagEMRPOLYDRAW16 /* wingdi.h:3770:5 */
type PEMRPOLYDRAW16 = uintptr         /* wingdi.h:3770:19 */

type tagEMRPOLYPOLYLINE = struct {
	emr         EMR
	rclBounds   RECTL
	nPolys      DWORD
	cptl        DWORD
	aPolyCounts [1]DWORD
	aptl        [1]POINTL
} /* wingdi.h:3772:11 */

type EMRPOLYPOLYLINE = tagEMRPOLYPOLYLINE /* wingdi.h:3779:5 */
type PEMRPOLYPOLYLINE = uintptr           /* wingdi.h:3779:21 */
type EMRPOLYPOLYGON = tagEMRPOLYPOLYLINE  /* wingdi.h:3779:39 */
type PEMRPOLYPOLYGON = uintptr            /* wingdi.h:3779:54 */

type tagEMRPOLYPOLYLINE16 = struct {
	emr         EMR
	rclBounds   RECTL
	nPolys      DWORD
	cpts        DWORD
	aPolyCounts [1]DWORD
	apts        [1]POINTS
} /* wingdi.h:3781:11 */

type EMRPOLYPOLYLINE16 = tagEMRPOLYPOLYLINE16 /* wingdi.h:3788:5 */
type PEMRPOLYPOLYLINE16 = uintptr             /* wingdi.h:3788:23 */
type EMRPOLYPOLYGON16 = tagEMRPOLYPOLYLINE16  /* wingdi.h:3788:43 */
type PEMRPOLYPOLYGON16 = uintptr              /* wingdi.h:3788:60 */

type tagEMRINVERTRGN = struct {
	emr       EMR
	rclBounds RECTL
	cbRgnData DWORD
	RgnData   [1]BYTE
	_         [3]byte
} /* wingdi.h:3790:11 */

type EMRINVERTRGN = tagEMRINVERTRGN /* wingdi.h:3795:5 */
type PEMRINVERTRGN = uintptr        /* wingdi.h:3795:18 */
type EMRPAINTRGN = tagEMRINVERTRGN  /* wingdi.h:3795:33 */
type PEMRPAINTRGN = uintptr         /* wingdi.h:3795:45 */

type tagEMRFILLRGN = struct {
	emr       EMR
	rclBounds RECTL
	cbRgnData DWORD
	ihBrush   DWORD
	RgnData   [1]BYTE
	_         [3]byte
} /* wingdi.h:3797:11 */

type EMRFILLRGN = tagEMRFILLRGN /* wingdi.h:3803:5 */
type PEMRFILLRGN = uintptr      /* wingdi.h:3803:16 */

type tagEMRFRAMERGN = struct {
	emr       EMR
	rclBounds RECTL
	cbRgnData DWORD
	ihBrush   DWORD
	szlStroke SIZEL
	RgnData   [1]BYTE
	_         [3]byte
} /* wingdi.h:3805:11 */

type EMRFRAMERGN = tagEMRFRAMERGN /* wingdi.h:3812:5 */
type PEMRFRAMERGN = uintptr       /* wingdi.h:3812:17 */

type tagEMREXTSELECTCLIPRGN = struct {
	emr       EMR
	cbRgnData DWORD
	iMode     DWORD
	RgnData   [1]BYTE
	_         [3]byte
} /* wingdi.h:3814:11 */

type EMREXTSELECTCLIPRGN = tagEMREXTSELECTCLIPRGN /* wingdi.h:3819:5 */
type PEMREXTSELECTCLIPRGN = uintptr               /* wingdi.h:3819:25 */

type tagEMREXTTEXTOUTA = struct {
	emr           EMR
	rclBounds     RECTL
	iGraphicsMode DWORD
	exScale       FLOAT
	eyScale       FLOAT
	emrtext       EMRTEXT
} /* wingdi.h:3821:11 */

type EMREXTTEXTOUTA = tagEMREXTTEXTOUTA /* wingdi.h:3828:5 */
type PEMREXTTEXTOUTA = uintptr          /* wingdi.h:3828:20 */
type EMREXTTEXTOUTW = tagEMREXTTEXTOUTA /* wingdi.h:3828:37 */
type PEMREXTTEXTOUTW = uintptr          /* wingdi.h:3828:52 */

type tagEMRPOLYTEXTOUTA = struct {
	emr           EMR
	rclBounds     RECTL
	iGraphicsMode DWORD
	exScale       FLOAT
	eyScale       FLOAT
	cStrings      LONG
	aemrtext      [1]EMRTEXT
} /* wingdi.h:3830:11 */

type EMRPOLYTEXTOUTA = tagEMRPOLYTEXTOUTA /* wingdi.h:3838:5 */
type PEMRPOLYTEXTOUTA = uintptr           /* wingdi.h:3838:21 */
type EMRPOLYTEXTOUTW = tagEMRPOLYTEXTOUTA /* wingdi.h:3838:39 */
type PEMRPOLYTEXTOUTW = uintptr           /* wingdi.h:3838:55 */

type tagEMRBITBLT = struct {
	emr          EMR
	rclBounds    RECTL
	xDest        LONG
	yDest        LONG
	cxDest       LONG
	cyDest       LONG
	dwRop        DWORD
	xSrc         LONG
	ySrc         LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
} /* wingdi.h:3840:11 */

type EMRBITBLT = tagEMRBITBLT /* wingdi.h:3857:5 */
type PEMRBITBLT = uintptr     /* wingdi.h:3857:15 */

type tagEMRSTRETCHBLT = struct {
	emr          EMR
	rclBounds    RECTL
	xDest        LONG
	yDest        LONG
	cxDest       LONG
	cyDest       LONG
	dwRop        DWORD
	xSrc         LONG
	ySrc         LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
	cxSrc        LONG
	cySrc        LONG
} /* wingdi.h:3859:11 */

type EMRSTRETCHBLT = tagEMRSTRETCHBLT /* wingdi.h:3878:5 */
type PEMRSTRETCHBLT = uintptr         /* wingdi.h:3878:19 */

type tagEMRMASKBLT = struct {
	emr          EMR
	rclBounds    RECTL
	xDest        LONG
	yDest        LONG
	cxDest       LONG
	cyDest       LONG
	dwRop        DWORD
	xSrc         LONG
	ySrc         LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
	xMask        LONG
	yMask        LONG
	iUsageMask   DWORD
	offBmiMask   DWORD
	cbBmiMask    DWORD
	offBitsMask  DWORD
	cbBitsMask   DWORD
} /* wingdi.h:3880:11 */

type EMRMASKBLT = tagEMRMASKBLT /* wingdi.h:3904:5 */
type PEMRMASKBLT = uintptr      /* wingdi.h:3904:16 */

type tagEMRPLGBLT = struct {
	emr          EMR
	rclBounds    RECTL
	aptlDest     [3]POINTL
	xSrc         LONG
	ySrc         LONG
	cxSrc        LONG
	cySrc        LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
	xMask        LONG
	yMask        LONG
	iUsageMask   DWORD
	offBmiMask   DWORD
	cbBmiMask    DWORD
	offBitsMask  DWORD
	cbBitsMask   DWORD
} /* wingdi.h:3906:11 */

type EMRPLGBLT = tagEMRPLGBLT /* wingdi.h:3928:5 */
type PEMRPLGBLT = uintptr     /* wingdi.h:3928:15 */

type tagEMRSETDIBITSTODEVICE = struct {
	emr        EMR
	rclBounds  RECTL
	xDest      LONG
	yDest      LONG
	xSrc       LONG
	ySrc       LONG
	cxSrc      LONG
	cySrc      LONG
	offBmiSrc  DWORD
	cbBmiSrc   DWORD
	offBitsSrc DWORD
	cbBitsSrc  DWORD
	iUsageSrc  DWORD
	iStartScan DWORD
	cScans     DWORD
} /* wingdi.h:3930:11 */

type EMRSETDIBITSTODEVICE = tagEMRSETDIBITSTODEVICE /* wingdi.h:3946:5 */
type PEMRSETDIBITSTODEVICE = uintptr                /* wingdi.h:3946:26 */

type tagEMRSTRETCHDIBITS = struct {
	emr        EMR
	rclBounds  RECTL
	xDest      LONG
	yDest      LONG
	xSrc       LONG
	ySrc       LONG
	cxSrc      LONG
	cySrc      LONG
	offBmiSrc  DWORD
	cbBmiSrc   DWORD
	offBitsSrc DWORD
	cbBitsSrc  DWORD
	iUsageSrc  DWORD
	dwRop      DWORD
	cxDest     LONG
	cyDest     LONG
} /* wingdi.h:3948:11 */

type EMRSTRETCHDIBITS = tagEMRSTRETCHDIBITS /* wingdi.h:3965:5 */
type PEMRSTRETCHDIBITS = uintptr            /* wingdi.h:3965:22 */

type tagEMREXTCREATEFONTINDIRECTW = struct {
	emr    EMR
	ihFont DWORD
	elfw   EXTLOGFONTW
} /* wingdi.h:3967:11 */

type EMREXTCREATEFONTINDIRECTW = tagEMREXTCREATEFONTINDIRECTW /* wingdi.h:3971:5 */
type PEMREXTCREATEFONTINDIRECTW = uintptr                     /* wingdi.h:3971:31 */

type tagEMRCREATEPALETTE = struct {
	emr   EMR
	ihPal DWORD
	lgpl  LOGPALETTE
} /* wingdi.h:3973:11 */

type EMRCREATEPALETTE = tagEMRCREATEPALETTE /* wingdi.h:3977:5 */
type PEMRCREATEPALETTE = uintptr            /* wingdi.h:3977:22 */

type tagEMRCREATEPEN = struct {
	emr   EMR
	ihPen DWORD
	lopn  LOGPEN
} /* wingdi.h:3979:11 */

type EMRCREATEPEN = tagEMRCREATEPEN /* wingdi.h:3983:5 */
type PEMRCREATEPEN = uintptr        /* wingdi.h:3983:18 */

type tagEMREXTCREATEPEN = struct {
	emr     EMR
	ihPen   DWORD
	offBmi  DWORD
	cbBmi   DWORD
	offBits DWORD
	cbBits  DWORD
	elp     EXTLOGPEN
} /* wingdi.h:3985:11 */

type EMREXTCREATEPEN = tagEMREXTCREATEPEN /* wingdi.h:3993:5 */
type PEMREXTCREATEPEN = uintptr           /* wingdi.h:3993:21 */

type tagEMRCREATEBRUSHINDIRECT = struct {
	emr     EMR
	ihBrush DWORD
	lb      LOGBRUSH32
} /* wingdi.h:3995:11 */

type EMRCREATEBRUSHINDIRECT = tagEMRCREATEBRUSHINDIRECT /* wingdi.h:3999:5 */
type PEMRCREATEBRUSHINDIRECT = uintptr                  /* wingdi.h:3999:28 */

type tagEMRCREATEMONOBRUSH = struct {
	emr     EMR
	ihBrush DWORD
	iUsage  DWORD
	offBmi  DWORD
	cbBmi   DWORD
	offBits DWORD
	cbBits  DWORD
} /* wingdi.h:4001:11 */

type EMRCREATEMONOBRUSH = tagEMRCREATEMONOBRUSH /* wingdi.h:4009:5 */
type PEMRCREATEMONOBRUSH = uintptr              /* wingdi.h:4009:24 */

type tagEMRCREATEDIBPATTERNBRUSHPT = struct {
	emr     EMR
	ihBrush DWORD
	iUsage  DWORD
	offBmi  DWORD
	cbBmi   DWORD
	offBits DWORD
	cbBits  DWORD
} /* wingdi.h:4011:11 */

type EMRCREATEDIBPATTERNBRUSHPT = tagEMRCREATEDIBPATTERNBRUSHPT /* wingdi.h:4019:5 */
type PEMRCREATEDIBPATTERNBRUSHPT = uintptr                      /* wingdi.h:4019:32 */

type tagEMRFORMAT = struct {
	dSignature DWORD
	nVersion   DWORD
	cbData     DWORD
	offData    DWORD
} /* wingdi.h:4021:11 */

type EMRFORMAT = tagEMRFORMAT /* wingdi.h:4026:5 */
type PEMRFORMAT = uintptr     /* wingdi.h:4026:15 */

type tagEMRGLSRECORD = struct {
	emr    EMR
	cbData DWORD
	Data   [1]BYTE
	_      [3]byte
} /* wingdi.h:4028:11 */

type EMRGLSRECORD = tagEMRGLSRECORD /* wingdi.h:4032:5 */
type PEMRGLSRECORD = uintptr        /* wingdi.h:4032:18 */

type tagEMRGLSBOUNDEDRECORD = struct {
	emr       EMR
	rclBounds RECTL
	cbData    DWORD
	Data      [1]BYTE
	_         [3]byte
} /* wingdi.h:4034:11 */

type EMRGLSBOUNDEDRECORD = tagEMRGLSBOUNDEDRECORD /* wingdi.h:4039:5 */
type PEMRGLSBOUNDEDRECORD = uintptr               /* wingdi.h:4039:25 */

type tagEMRPIXELFORMAT = struct {
	emr EMR
	pfd PIXELFORMATDESCRIPTOR
} /* wingdi.h:4041:11 */

type EMRPIXELFORMAT = tagEMRPIXELFORMAT /* wingdi.h:4044:5 */
type PEMRPIXELFORMAT = uintptr          /* wingdi.h:4044:20 */

type tagEMRCREATECOLORSPACE = struct {
	emr  EMR
	ihCS DWORD
	lcs  LOGCOLORSPACEA
} /* wingdi.h:4046:11 */

type EMRCREATECOLORSPACE = tagEMRCREATECOLORSPACE /* wingdi.h:4050:5 */
type PEMRCREATECOLORSPACE = uintptr               /* wingdi.h:4050:25 */

type tagEMRSETCOLORSPACE = struct {
	emr  EMR
	ihCS DWORD
} /* wingdi.h:4052:11 */

type EMRSETCOLORSPACE = tagEMRSETCOLORSPACE    /* wingdi.h:4055:5 */
type PEMRSETCOLORSPACE = uintptr               /* wingdi.h:4055:22 */
type EMRSELECTCOLORSPACE = tagEMRSETCOLORSPACE /* wingdi.h:4055:41 */
type PEMRSELECTCOLORSPACE = uintptr            /* wingdi.h:4055:61 */
type EMRDELETECOLORSPACE = tagEMRSETCOLORSPACE /* wingdi.h:4055:83 */
type PEMRDELETECOLORSPACE = uintptr            /* wingdi.h:4055:103 */

type tagEMREXTESCAPE = struct {
	emr       EMR
	iEscape   INT
	cbEscData INT
	EscData   [1]BYTE
	_         [3]byte
} /* wingdi.h:4057:11 */

type EMREXTESCAPE = tagEMREXTESCAPE  /* wingdi.h:4062:5 */
type PEMREXTESCAPE = uintptr         /* wingdi.h:4062:18 */
type EMRDRAWESCAPE = tagEMREXTESCAPE /* wingdi.h:4062:33 */
type PEMRDRAWESCAPE = uintptr        /* wingdi.h:4062:47 */

type tagEMRNAMEDESCAPE = struct {
	emr       EMR
	iEscape   INT
	cbDriver  INT
	cbEscData INT
	EscData   [1]BYTE
	_         [3]byte
} /* wingdi.h:4064:11 */

type EMRNAMEDESCAPE = tagEMRNAMEDESCAPE /* wingdi.h:4070:5 */
type PEMRNAMEDESCAPE = uintptr          /* wingdi.h:4070:20 */

type tagEMRSETICMPROFILE = struct {
	emr     EMR
	dwFlags DWORD
	cbName  DWORD
	cbData  DWORD
	Data    [1]BYTE
	_       [3]byte
} /* wingdi.h:4074:11 */

type EMRSETICMPROFILE = tagEMRSETICMPROFILE  /* wingdi.h:4080:5 */
type PEMRSETICMPROFILE = uintptr             /* wingdi.h:4080:22 */
type EMRSETICMPROFILEA = tagEMRSETICMPROFILE /* wingdi.h:4080:41 */
type PEMRSETICMPROFILEA = uintptr            /* wingdi.h:4080:59 */
type EMRSETICMPROFILEW = tagEMRSETICMPROFILE /* wingdi.h:4080:79 */
type PEMRSETICMPROFILEW = uintptr            /* wingdi.h:4080:97 */

type tagEMRCREATECOLORSPACEW = struct {
	emr     EMR
	ihCS    DWORD
	lcs     LOGCOLORSPACEW
	dwFlags DWORD
	cbData  DWORD
	Data    [1]BYTE
	_       [3]byte
} /* wingdi.h:4084:11 */

type EMRCREATECOLORSPACEW = tagEMRCREATECOLORSPACEW /* wingdi.h:4091:5 */
type PEMRCREATECOLORSPACEW = uintptr                /* wingdi.h:4091:26 */

type tagCOLORMATCHTOTARGET = struct {
	emr      EMR
	dwAction DWORD
	dwFlags  DWORD
	cbName   DWORD
	cbData   DWORD
	Data     [1]BYTE
	_        [3]byte
} /* wingdi.h:4095:11 */

type EMRCOLORMATCHTOTARGET = tagCOLORMATCHTOTARGET /* wingdi.h:4102:5 */
type PEMRCOLORMATCHTOTARGET = uintptr              /* wingdi.h:4102:27 */

type tagCOLORCORRECTPALETTE = struct {
	emr         EMR
	ihPalette   DWORD
	nFirstEntry DWORD
	nPalEntries DWORD
	nReserved   DWORD
} /* wingdi.h:4104:11 */

type EMRCOLORCORRECTPALETTE = tagCOLORCORRECTPALETTE /* wingdi.h:4110:5 */
type PEMRCOLORCORRECTPALETTE = uintptr               /* wingdi.h:4110:28 */

type tagEMRALPHABLEND = struct {
	emr          EMR
	rclBounds    RECTL
	xDest        LONG
	yDest        LONG
	cxDest       LONG
	cyDest       LONG
	dwRop        DWORD
	xSrc         LONG
	ySrc         LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
	cxSrc        LONG
	cySrc        LONG
} /* wingdi.h:4112:11 */

type EMRALPHABLEND = tagEMRALPHABLEND /* wingdi.h:4131:5 */
type PEMRALPHABLEND = uintptr         /* wingdi.h:4131:19 */

type tagEMRGRADIENTFILL = struct {
	emr       EMR
	rclBounds RECTL
	nVer      DWORD
	nTri      DWORD
	ulMode    ULONG
	Ver       [1]TRIVERTEX
} /* wingdi.h:4133:11 */

type EMRGRADIENTFILL = tagEMRGRADIENTFILL /* wingdi.h:4140:5 */
type PEMRGRADIENTFILL = uintptr           /* wingdi.h:4140:21 */

type tagEMRTRANSPARENTBLT = struct {
	emr          EMR
	rclBounds    RECTL
	xDest        LONG
	yDest        LONG
	cxDest       LONG
	cyDest       LONG
	dwRop        DWORD
	xSrc         LONG
	ySrc         LONG
	xformSrc     XFORM
	crBkColorSrc COLORREF
	iUsageSrc    DWORD
	offBmiSrc    DWORD
	cbBmiSrc     DWORD
	offBitsSrc   DWORD
	cbBitsSrc    DWORD
	cxSrc        LONG
	cySrc        LONG
} /* wingdi.h:4142:11 */

type EMRTRANSPARENTBLT = tagEMRTRANSPARENTBLT /* wingdi.h:4161:5 */
type PEMRTRANSPARENTBLT = uintptr             /* wingdi.h:4161:23 */

type _POINTFLOAT = struct {
	x FLOAT
	y FLOAT
} /* wingdi.h:4188:11 */

type POINTFLOAT = _POINTFLOAT /* wingdi.h:4191:5 */
type PPOINTFLOAT = uintptr    /* wingdi.h:4191:16 */

type _GLYPHMETRICSFLOAT = struct {
	gmfBlackBoxX     FLOAT
	gmfBlackBoxY     FLOAT
	gmfptGlyphOrigin POINTFLOAT
	gmfCellIncX      FLOAT
	gmfCellIncY      FLOAT
} /* wingdi.h:4193:11 */

type GLYPHMETRICSFLOAT = _GLYPHMETRICSFLOAT /* wingdi.h:4199:5 */
type PGLYPHMETRICSFLOAT = uintptr           /* wingdi.h:4199:23 */
type LPGLYPHMETRICSFLOAT = uintptr          /* wingdi.h:4199:43 */

type tagLAYERPLANEDESCRIPTOR = struct {
	nSize           WORD
	nVersion        WORD
	dwFlags         DWORD
	iPixelType      BYTE
	cColorBits      BYTE
	cRedBits        BYTE
	cRedShift       BYTE
	cGreenBits      BYTE
	cGreenShift     BYTE
	cBlueBits       BYTE
	cBlueShift      BYTE
	cAlphaBits      BYTE
	cAlphaShift     BYTE
	cAccumBits      BYTE
	cAccumRedBits   BYTE
	cAccumGreenBits BYTE
	cAccumBlueBits  BYTE
	cAccumAlphaBits BYTE
	cDepthBits      BYTE
	cStencilBits    BYTE
	cAuxBuffers     BYTE
	iLayerPlane     BYTE
	bReserved       BYTE
	crTransparent   COLORREF
} /* wingdi.h:4209:11 */

type LAYERPLANEDESCRIPTOR = tagLAYERPLANEDESCRIPTOR /* wingdi.h:4234:5 */
type PLAYERPLANEDESCRIPTOR = uintptr                /* wingdi.h:4234:26 */
type LPLAYERPLANEDESCRIPTOR = uintptr               /* wingdi.h:4234:49 */

type _WGLSWAP = struct {
	hdc     HDC
	uiFlags UINT
} /* wingdi.h:4288:11 */

type WGLSWAP = _WGLSWAP  /* wingdi.h:4291:5 */
type PWGLSWAP = uintptr  /* wingdi.h:4291:13 */
type LPWGLSWAP = uintptr /* wingdi.h:4291:23 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with GCC; see the file COPYING.  If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.

// As a special exception, if you include this header file into source
//    files compiled by GCC, this header file does not by itself cause
//    the resulting executable to be covered by the GNU General Public
//    License.  This exception does not however invalidate any other
//    reasons why the executable file might be covered by the GNU General
//    Public License.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// include mingw stuff
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// __declspec(selectany) must be applied to initialized objects on GCC 5 hence must not be used here.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type HDWP = HANDLE                    /* winuser.h:32:18 */
type LPMENUTEMPLATEA = PVOID          /* winuser.h:35:17 */
type LPMENUTEMPLATEW = PVOID          /* winuser.h:36:17 */
type LPMENUTEMPLATE = LPMENUTEMPLATEW /* winuser.h:39:3 */

type WNDPROC = uintptr /* winuser.h:41:19 */

type DLGPROC = uintptr /* winuser.h:46:19 */

type TIMERPROC = uintptr      /* winuser.h:50:16 */
type GRAYSTRINGPROC = uintptr /* winuser.h:51:19 */
type WNDENUMPROC = uintptr    /* winuser.h:52:19 */
type HOOKPROC = uintptr       /* winuser.h:53:19 */
type SENDASYNCPROC = uintptr  /* winuser.h:54:16 */

type PROPENUMPROCA = uintptr /* winuser.h:56:19 */
type PROPENUMPROCW = uintptr /* winuser.h:57:19 */

type PROPENUMPROCEXA = uintptr /* winuser.h:59:19 */
type PROPENUMPROCEXW = uintptr /* winuser.h:60:19 */

type EDITWORDBREAKPROCA = uintptr /* winuser.h:62:15 */
type EDITWORDBREAKPROCW = uintptr /* winuser.h:63:15 */

type DRAWSTATEPROC = uintptr /* winuser.h:65:19 */

type PROPENUMPROC = PROPENUMPROCW           /* winuser.h:93:3 */
type PROPENUMPROCEX = PROPENUMPROCEXW       /* winuser.h:94:3 */
type EDITWORDBREAKPROC = EDITWORDBREAKPROCW /* winuser.h:95:3 */

type NAMEENUMPROCA = uintptr          /* winuser.h:98:19 */
type NAMEENUMPROCW = uintptr          /* winuser.h:99:19 */
type WINSTAENUMPROCA = NAMEENUMPROCA  /* winuser.h:100:25 */
type WINSTAENUMPROCW = NAMEENUMPROCW  /* winuser.h:101:25 */
type DESKTOPENUMPROCA = NAMEENUMPROCA /* winuser.h:102:25 */
type DESKTOPENUMPROCW = NAMEENUMPROCW /* winuser.h:103:25 */

type WINSTAENUMPROC = WINSTAENUMPROCW   /* winuser.h:113:3 */
type DESKTOPENUMPROC = DESKTOPENUMPROCW /* winuser.h:114:3 */

type tagCBT_CREATEWNDA = struct {
	lpcs            uintptr
	hwndInsertAfter HWND
} /* winuser.h:456:11 */

type tagCREATESTRUCTA = struct {
	lpCreateParams LPVOID
	hInstance      HINSTANCE
	hMenu          HMENU
	hwndParent     HWND
	cy             int32
	cx             int32
	y              int32
	x              int32
	style          LONG
	lpszName       LPCSTR
	lpszClass      LPCSTR
	dwExStyle      DWORD
} /* winuser.h:456:11 */

type CBT_CREATEWNDA = tagCBT_CREATEWNDA /* winuser.h:459:5 */
type LPCBT_CREATEWNDA = uintptr         /* winuser.h:459:20 */

type tagCBT_CREATEWNDW = struct {
	lpcs            uintptr
	hwndInsertAfter HWND
} /* winuser.h:461:11 */

type tagCREATESTRUCTW = struct {
	lpCreateParams LPVOID
	hInstance      HINSTANCE
	hMenu          HMENU
	hwndParent     HWND
	cy             int32
	cx             int32
	y              int32
	x              int32
	style          LONG
	lpszName       LPCWSTR
	lpszClass      LPCWSTR
	dwExStyle      DWORD
} /* winuser.h:461:11 */

type CBT_CREATEWNDW = tagCBT_CREATEWNDW /* winuser.h:464:5 */
type LPCBT_CREATEWNDW = uintptr         /* winuser.h:464:20 */

type CBT_CREATEWND = CBT_CREATEWNDW     /* winuser.h:466:3 */
type LPCBT_CREATEWND = LPCBT_CREATEWNDW /* winuser.h:467:3 */

type tagCBTACTIVATESTRUCT = struct {
	fMouse     WINBOOL
	hWndActive HWND
} /* winuser.h:469:11 */

type CBTACTIVATESTRUCT = tagCBTACTIVATESTRUCT /* winuser.h:472:5 */
type LPCBTACTIVATESTRUCT = uintptr            /* winuser.h:472:23 */

type tagWTSSESSION_NOTIFICATION = struct {
	cbSize      DWORD
	dwSessionId DWORD
} /* winuser.h:476:11 */

type WTSSESSION_NOTIFICATION = tagWTSSESSION_NOTIFICATION /* winuser.h:479:5 */
type PWTSSESSION_NOTIFICATION = uintptr                   /* winuser.h:479:29 */

type SHELLHOOKINFO = struct {
	hwnd HWND
	rc   RECT
}                              /* winuser.h:600:5 */
type LPSHELLHOOKINFO = uintptr /* winuser.h:600:19 */

type tagEVENTMSG = struct {
	message UINT
	paramL  UINT
	paramH  UINT
	time    DWORD
	hwnd    HWND
} /* winuser.h:602:11 */

type EVENTMSG = tagEVENTMSG  /* winuser.h:608:5 */
type PEVENTMSGMSG = uintptr  /* winuser.h:608:14 */
type NPEVENTMSGMSG = uintptr /* winuser.h:608:28 */
type LPEVENTMSGMSG = uintptr /* winuser.h:608:43 */

type PEVENTMSG = uintptr  /* winuser.h:610:30 */
type NPEVENTMSG = uintptr /* winuser.h:610:41 */
type LPEVENTMSG = uintptr /* winuser.h:610:53 */

type tagCWPSTRUCT = struct {
	lParam  LPARAM
	wParam  WPARAM
	message UINT
	hwnd    HWND
} /* winuser.h:612:11 */

type CWPSTRUCT = tagCWPSTRUCT /* winuser.h:617:5 */
type PCWPSTRUCT = uintptr     /* winuser.h:617:15 */
type NPCWPSTRUCT = uintptr    /* winuser.h:617:27 */
type LPCWPSTRUCT = uintptr    /* winuser.h:617:40 */

type tagCWPRETSTRUCT = struct {
	lResult LRESULT
	lParam  LPARAM
	wParam  WPARAM
	message UINT
	hwnd    HWND
} /* winuser.h:619:11 */

type CWPRETSTRUCT = tagCWPRETSTRUCT /* winuser.h:625:5 */
type PCWPRETSTRUCT = uintptr        /* winuser.h:625:18 */
type NPCWPRETSTRUCT = uintptr       /* winuser.h:625:33 */
type LPCWPRETSTRUCT = uintptr       /* winuser.h:625:49 */

type tagKBDLLHOOKSTRUCT = struct {
	vkCode      DWORD
	scanCode    DWORD
	flags       DWORD
	time        DWORD
	dwExtraInfo ULONG_PTR
} /* winuser.h:636:11 */

type KBDLLHOOKSTRUCT = tagKBDLLHOOKSTRUCT /* winuser.h:642:5 */
type LPKBDLLHOOKSTRUCT = uintptr          /* winuser.h:642:21 */
type PKBDLLHOOKSTRUCT = uintptr           /* winuser.h:642:40 */

type tagMSLLHOOKSTRUCT = struct {
	pt          POINT
	mouseData   DWORD
	flags       DWORD
	time        DWORD
	dwExtraInfo ULONG_PTR
} /* winuser.h:644:11 */

type MSLLHOOKSTRUCT = tagMSLLHOOKSTRUCT /* winuser.h:650:5 */
type LPMSLLHOOKSTRUCT = uintptr         /* winuser.h:650:20 */
type PMSLLHOOKSTRUCT = uintptr          /* winuser.h:650:38 */

type tagDEBUGHOOKINFO = struct {
	idThread          DWORD
	idThreadInstaller DWORD
	lParam            LPARAM
	wParam            WPARAM
	code              int32
} /* winuser.h:652:11 */

type DEBUGHOOKINFO = tagDEBUGHOOKINFO /* winuser.h:658:5 */
type PDEBUGHOOKINFO = uintptr         /* winuser.h:658:19 */
type NPDEBUGHOOKINFO = uintptr        /* winuser.h:658:35 */
type LPDEBUGHOOKINFO = uintptr        /* winuser.h:658:52 */

type tagMOUSEHOOKSTRUCT = struct {
	pt           POINT
	hwnd         HWND
	wHitTestCode UINT
	dwExtraInfo  ULONG_PTR
} /* winuser.h:660:11 */

type MOUSEHOOKSTRUCT = tagMOUSEHOOKSTRUCT /* winuser.h:665:5 */
type LPMOUSEHOOKSTRUCT = uintptr          /* winuser.h:665:21 */
type PMOUSEHOOKSTRUCT = uintptr           /* winuser.h:665:40 */

type tagMOUSEHOOKSTRUCTEX = struct {
	__unnamed MOUSEHOOKSTRUCT
	mouseData DWORD
} /* winuser.h:672:11 */

type MOUSEHOOKSTRUCTEX = tagMOUSEHOOKSTRUCTEX /* winuser.h:675:5 */
type LPMOUSEHOOKSTRUCTEX = uintptr            /* winuser.h:675:23 */
type PMOUSEHOOKSTRUCTEX = uintptr             /* winuser.h:675:44 */

type tagHARDWAREHOOKSTRUCT = struct {
	hwnd    HWND
	message UINT
	wParam  WPARAM
	lParam  LPARAM
} /* winuser.h:678:11 */

type HARDWAREHOOKSTRUCT = tagHARDWAREHOOKSTRUCT /* winuser.h:683:5 */
type LPHARDWAREHOOKSTRUCT = uintptr             /* winuser.h:683:24 */
type PHARDWAREHOOKSTRUCT = uintptr              /* winuser.h:683:46 */

type tagMOUSEMOVEPOINT = struct {
	x           int32
	y           int32
	time        DWORD
	dwExtraInfo ULONG_PTR
} /* winuser.h:719:11 */

type MOUSEMOVEPOINT = tagMOUSEMOVEPOINT /* winuser.h:724:5 */
type PMOUSEMOVEPOINT = uintptr          /* winuser.h:724:20 */
type LPMOUSEMOVEPOINT = uintptr         /* winuser.h:724:37 */

type tagUSEROBJECTFLAGS = struct {
	fInherit  WINBOOL
	fReserved WINBOOL
	dwFlags   DWORD
} /* winuser.h:825:11 */

type USEROBJECTFLAGS = tagUSEROBJECTFLAGS /* winuser.h:829:5 */
type PUSEROBJECTFLAGS = uintptr           /* winuser.h:829:21 */

type tagWNDCLASSEXA = struct {
	cbSize        UINT
	style         UINT
	lpfnWndProc   WNDPROC
	cbClsExtra    int32
	cbWndExtra    int32
	hInstance     HINSTANCE
	hIcon         HICON
	hCursor       HCURSOR
	hbrBackground HBRUSH
	lpszMenuName  LPCSTR
	lpszClassName LPCSTR
	hIconSm       HICON
} /* winuser.h:842:11 */

type WNDCLASSEXA = tagWNDCLASSEXA /* winuser.h:855:5 */
type PWNDCLASSEXA = uintptr       /* winuser.h:855:17 */
type NPWNDCLASSEXA = uintptr      /* winuser.h:855:31 */
type LPWNDCLASSEXA = uintptr      /* winuser.h:855:46 */

type tagWNDCLASSEXW = struct {
	cbSize        UINT
	style         UINT
	lpfnWndProc   WNDPROC
	cbClsExtra    int32
	cbWndExtra    int32
	hInstance     HINSTANCE
	hIcon         HICON
	hCursor       HCURSOR
	hbrBackground HBRUSH
	lpszMenuName  LPCWSTR
	lpszClassName LPCWSTR
	hIconSm       HICON
} /* winuser.h:857:11 */

type WNDCLASSEXW = tagWNDCLASSEXW /* winuser.h:870:5 */
type PWNDCLASSEXW = uintptr       /* winuser.h:870:17 */
type NPWNDCLASSEXW = uintptr      /* winuser.h:870:31 */
type LPWNDCLASSEXW = uintptr      /* winuser.h:870:46 */

type WNDCLASSEX = WNDCLASSEXW     /* winuser.h:872:3 */
type PWNDCLASSEX = PWNDCLASSEXW   /* winuser.h:873:3 */
type NPWNDCLASSEX = NPWNDCLASSEXW /* winuser.h:874:3 */
type LPWNDCLASSEX = LPWNDCLASSEXW /* winuser.h:875:3 */

type tagWNDCLASSA = struct {
	style         UINT
	lpfnWndProc   WNDPROC
	cbClsExtra    int32
	cbWndExtra    int32
	hInstance     HINSTANCE
	hIcon         HICON
	hCursor       HCURSOR
	hbrBackground HBRUSH
	lpszMenuName  LPCSTR
	lpszClassName LPCSTR
} /* winuser.h:877:11 */

type WNDCLASSA = tagWNDCLASSA /* winuser.h:888:5 */
type PWNDCLASSA = uintptr     /* winuser.h:888:15 */
type NPWNDCLASSA = uintptr    /* winuser.h:888:27 */
type LPWNDCLASSA = uintptr    /* winuser.h:888:40 */

type tagWNDCLASSW = struct {
	style         UINT
	lpfnWndProc   WNDPROC
	cbClsExtra    int32
	cbWndExtra    int32
	hInstance     HINSTANCE
	hIcon         HICON
	hCursor       HCURSOR
	hbrBackground HBRUSH
	lpszMenuName  LPCWSTR
	lpszClassName LPCWSTR
} /* winuser.h:890:11 */

type WNDCLASSW = tagWNDCLASSW /* winuser.h:901:5 */
type PWNDCLASSW = uintptr     /* winuser.h:901:15 */
type NPWNDCLASSW = uintptr    /* winuser.h:901:27 */
type LPWNDCLASSW = uintptr    /* winuser.h:901:40 */

type WNDCLASS = WNDCLASSW     /* winuser.h:903:3 */
type PWNDCLASS = PWNDCLASSW   /* winuser.h:904:3 */
type NPWNDCLASS = NPWNDCLASSW /* winuser.h:905:3 */
type LPWNDCLASS = LPWNDCLASSW /* winuser.h:906:3 */

type tagMSG = struct {
	hwnd    HWND
	message UINT
	wParam  WPARAM
	lParam  LPARAM
	time    DWORD
	pt      POINT
} /* winuser.h:914:11 */

type MSG = tagMSG    /* winuser.h:921:5 */
type PMSG = uintptr  /* winuser.h:921:9 */
type NPMSG = uintptr /* winuser.h:921:15 */
type LPMSG = uintptr /* winuser.h:921:22 */

type tagMINMAXINFO = struct {
	ptReserved     POINT
	ptMaxSize      POINT
	ptMaxPosition  POINT
	ptMinTrackSize POINT
	ptMaxTrackSize POINT
} /* winuser.h:1031:11 */

type MINMAXINFO = tagMINMAXINFO /* winuser.h:1037:5 */
type PMINMAXINFO = uintptr      /* winuser.h:1037:16 */
type LPMINMAXINFO = uintptr     /* winuser.h:1037:29 */

type tagCOPYDATASTRUCT = struct {
	dwData ULONG_PTR
	cbData DWORD
	lpData PVOID
} /* winuser.h:1074:11 */

type COPYDATASTRUCT = tagCOPYDATASTRUCT /* winuser.h:1078:5 */
type PCOPYDATASTRUCT = uintptr          /* winuser.h:1078:20 */

type tagMDINEXTMENU = struct {
	hmenuIn   HMENU
	hmenuNext HMENU
	hwndNext  HWND
} /* winuser.h:1080:11 */

type MDINEXTMENU = tagMDINEXTMENU /* winuser.h:1084:5 */
type PMDINEXTMENU = uintptr       /* winuser.h:1084:17 */
type LPMDINEXTMENU = uintptr      /* winuser.h:1084:31 */

type tagWINDOWPOS = struct {
	hwnd            HWND
	hwndInsertAfter HWND
	x               int32
	y               int32
	cx              int32
	cy              int32
	flags           UINT
} /* winuser.h:1462:11 */

type WINDOWPOS = tagWINDOWPOS /* winuser.h:1470:5 */
type LPWINDOWPOS = uintptr    /* winuser.h:1470:15 */
type PWINDOWPOS = uintptr     /* winuser.h:1470:28 */

type tagNCCALCSIZE_PARAMS = struct {
	rgrc  [3]RECT
	lppos PWINDOWPOS
} /* winuser.h:1472:11 */

type NCCALCSIZE_PARAMS = tagNCCALCSIZE_PARAMS /* winuser.h:1475:5 */
type LPNCCALCSIZE_PARAMS = uintptr            /* winuser.h:1475:23 */

type tagTRACKMOUSEEVENT = struct {
	cbSize      DWORD
	dwFlags     DWORD
	hwndTrack   HWND
	dwHoverTime DWORD
} /* winuser.h:1509:11 */

type TRACKMOUSEEVENT = tagTRACKMOUSEEVENT /* winuser.h:1514:5 */
type LPTRACKMOUSEEVENT = uintptr          /* winuser.h:1514:21 */

type tagACCEL = struct {
	fVirt BYTE
	_     [1]byte
	key   WORD
	cmd   WORD
} /* winuser.h:1753:11 */

type ACCEL = tagACCEL  /* winuser.h:1757:5 */
type LPACCEL = uintptr /* winuser.h:1757:11 */

type tagPAINTSTRUCT = struct {
	hdc         HDC
	fErase      WINBOOL
	rcPaint     RECT
	fRestore    WINBOOL
	fIncUpdate  WINBOOL
	rgbReserved [32]BYTE
} /* winuser.h:1759:11 */

type PAINTSTRUCT = tagPAINTSTRUCT /* winuser.h:1766:5 */
type PPAINTSTRUCT = uintptr       /* winuser.h:1766:17 */
type NPPAINTSTRUCT = uintptr      /* winuser.h:1766:31 */
type LPPAINTSTRUCT = uintptr      /* winuser.h:1766:46 */

type CREATESTRUCTA = tagCREATESTRUCTA /* winuser.h:1781:5 */
type LPCREATESTRUCTA = uintptr        /* winuser.h:1781:19 */

type CREATESTRUCTW = tagCREATESTRUCTW /* winuser.h:1796:5 */
type LPCREATESTRUCTW = uintptr        /* winuser.h:1796:19 */

type CREATESTRUCT = CREATESTRUCTW     /* winuser.h:1798:3 */
type LPCREATESTRUCT = LPCREATESTRUCTW /* winuser.h:1799:3 */

type tagWINDOWPLACEMENT = struct {
	length           UINT
	flags            UINT
	showCmd          UINT
	ptMinPosition    POINT
	ptMaxPosition    POINT
	rcNormalPosition RECT
} /* winuser.h:1801:11 */

type WINDOWPLACEMENT = tagWINDOWPLACEMENT /* winuser.h:1808:5 */
type PWINDOWPLACEMENT = uintptr           /* winuser.h:1809:27 */
type LPWINDOWPLACEMENT = uintptr          /* winuser.h:1809:45 */

type tagNMHDR = struct {
	hwndFrom HWND
	idFrom   UINT_PTR
	code     UINT
} /* winuser.h:1817:11 */

type NMHDR = tagNMHDR /* winuser.h:1821:5 */

type LPNMHDR = uintptr /* winuser.h:1825:17 */

type tagSTYLESTRUCT = struct {
	styleOld DWORD
	styleNew DWORD
} /* winuser.h:1827:11 */

type STYLESTRUCT = tagSTYLESTRUCT /* winuser.h:1830:5 */
type LPSTYLESTRUCT = uintptr      /* winuser.h:1830:17 */

type tagMEASUREITEMSTRUCT = struct {
	CtlType    UINT
	CtlID      UINT
	itemID     UINT
	itemWidth  UINT
	itemHeight UINT
	itemData   ULONG_PTR
} /* winuser.h:1856:11 */

type MEASUREITEMSTRUCT = tagMEASUREITEMSTRUCT /* winuser.h:1863:5 */
type PMEASUREITEMSTRUCT = uintptr             /* winuser.h:1863:23 */
type LPMEASUREITEMSTRUCT = uintptr            /* winuser.h:1863:43 */

type tagDRAWITEMSTRUCT = struct {
	CtlType    UINT
	CtlID      UINT
	itemID     UINT
	itemAction UINT
	itemState  UINT
	hwndItem   HWND
	hDC        HDC
	rcItem     RECT
	itemData   ULONG_PTR
} /* winuser.h:1865:11 */

type DRAWITEMSTRUCT = tagDRAWITEMSTRUCT /* winuser.h:1875:5 */
type PDRAWITEMSTRUCT = uintptr          /* winuser.h:1875:20 */
type LPDRAWITEMSTRUCT = uintptr         /* winuser.h:1875:37 */

type tagDELETEITEMSTRUCT = struct {
	CtlType  UINT
	CtlID    UINT
	itemID   UINT
	hwndItem HWND
	itemData ULONG_PTR
} /* winuser.h:1877:11 */

type DELETEITEMSTRUCT = tagDELETEITEMSTRUCT /* winuser.h:1883:5 */
type PDELETEITEMSTRUCT = uintptr            /* winuser.h:1883:22 */
type LPDELETEITEMSTRUCT = uintptr           /* winuser.h:1883:41 */

type tagCOMPAREITEMSTRUCT = struct {
	CtlType    UINT
	CtlID      UINT
	hwndItem   HWND
	itemID1    UINT
	itemData1  ULONG_PTR
	itemID2    UINT
	itemData2  ULONG_PTR
	dwLocaleId DWORD
} /* winuser.h:1885:11 */

type COMPAREITEMSTRUCT = tagCOMPAREITEMSTRUCT /* winuser.h:1894:5 */
type PCOMPAREITEMSTRUCT = uintptr             /* winuser.h:1894:23 */
type LPCOMPAREITEMSTRUCT = uintptr            /* winuser.h:1894:43 */

type BSMINFO = struct {
	cbSize UINT
	hdesk  HDESK
	hwnd   HWND
	luid   LUID
}                       /* winuser.h:1997:5 */
type PBSMINFO = uintptr /* winuser.h:1997:13 */

type HDEVNOTIFY = PVOID    /* winuser.h:2030:17 */
type PHDEVNOTIFY = uintptr /* winuser.h:2031:22 */

type PREGISTERCLASSNAMEW = uintptr /* winuser.h:2132:19 */

type tagUPDATELAYEREDWINDOWINFO = struct {
	cbSize   DWORD
	hdcDst   HDC
	pptDst   uintptr
	psize    uintptr
	hdcSrc   HDC
	pptSrc   uintptr
	crKey    COLORREF
	pblend   uintptr
	dwFlags  DWORD
	prcDirty uintptr
} /* winuser.h:2155:11 */

type UPDATELAYEREDWINDOWINFO = tagUPDATELAYEREDWINDOWINFO /* winuser.h:2166:5 */
type PUPDATELAYEREDWINDOWINFO = uintptr                   /* winuser.h:2166:29 */

type FLASHWINFO = struct {
	cbSize    UINT
	hwnd      HWND
	dwFlags   DWORD
	uCount    UINT
	dwTimeout DWORD
}                          /* winuser.h:2206:5 */
type PFLASHWINFO = uintptr /* winuser.h:2206:16 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type DLGTEMPLATE = struct {
	style           DWORD
	dwExtendedStyle DWORD
	cdit            WORD
	x               int16
	y               int16
	cx              int16
	cy              int16
	_               [2]byte
} /* winuser.h:2279:5 */

type LPDLGTEMPLATEA = uintptr /* winuser.h:2283:23 */
type LPDLGTEMPLATEW = uintptr /* winuser.h:2284:23 */

type LPDLGTEMPLATE = LPDLGTEMPLATEW /* winuser.h:2286:3 */

type LPCDLGTEMPLATEA = uintptr /* winuser.h:2290:29 */
type LPCDLGTEMPLATEW = uintptr /* winuser.h:2291:29 */

type LPCDLGTEMPLATE = LPCDLGTEMPLATEW /* winuser.h:2293:3 */

type DLGITEMTEMPLATE = struct {
	style           DWORD
	dwExtendedStyle DWORD
	x               int16
	y               int16
	cx              int16
	cy              int16
	id              WORD
	_               [2]byte
} /* winuser.h:2305:5 */

type PDLGITEMTEMPLATEA = uintptr /* winuser.h:2307:27 */
type PDLGITEMTEMPLATEW = uintptr /* winuser.h:2308:27 */

type PDLGITEMTEMPLATE = PDLGITEMTEMPLATEW /* winuser.h:2310:3 */

type LPDLGITEMTEMPLATEA = uintptr /* winuser.h:2312:27 */
type LPDLGITEMTEMPLATEW = uintptr /* winuser.h:2313:27 */

type LPDLGITEMTEMPLATE = LPDLGITEMTEMPLATEW /* winuser.h:2315:3 */

type tagMOUSEINPUT = struct {
	dx          LONG
	dy          LONG
	mouseData   DWORD
	dwFlags     DWORD
	time        DWORD
	dwExtraInfo ULONG_PTR
} /* winuser.h:2646:11 */

type MOUSEINPUT = tagMOUSEINPUT /* winuser.h:2653:5 */
type PMOUSEINPUT = uintptr      /* winuser.h:2653:16 */
type LPMOUSEINPUT = uintptr     /* winuser.h:2653:29 */

type tagKEYBDINPUT = struct {
	wVk         WORD
	wScan       WORD
	dwFlags     DWORD
	time        DWORD
	dwExtraInfo ULONG_PTR
} /* winuser.h:2655:11 */

type KEYBDINPUT = tagKEYBDINPUT /* winuser.h:2661:5 */
type PKEYBDINPUT = uintptr      /* winuser.h:2661:16 */
type LPKEYBDINPUT = uintptr     /* winuser.h:2661:29 */

type tagHARDWAREINPUT = struct {
	uMsg    DWORD
	wParamL WORD
	wParamH WORD
} /* winuser.h:2663:11 */

type HARDWAREINPUT = tagHARDWAREINPUT /* winuser.h:2667:5 */
type PHARDWAREINPUT = uintptr         /* winuser.h:2667:19 */
type LPHARDWAREINPUT = uintptr        /* winuser.h:2667:35 */

type tagINPUT = struct {
	__type DWORD
	__4    struct{ mi MOUSEINPUT }
} /* winuser.h:2669:11 */

type INPUT = tagINPUT  /* winuser.h:2676:5 */
type PINPUT = uintptr  /* winuser.h:2676:11 */
type LPINPUT = uintptr /* winuser.h:2676:19 */

type tagLASTINPUTINFO = struct {
	cbSize UINT
	dwTime DWORD
} /* winuser.h:2830:11 */

type LASTINPUTINFO = tagLASTINPUTINFO /* winuser.h:2833:5 */
type PLASTINPUTINFO = uintptr         /* winuser.h:2833:19 */

type tagTPMPARAMS = struct {
	cbSize    UINT
	rcExclude RECT
} /* winuser.h:3152:11 */

type TPMPARAMS = tagTPMPARAMS /* winuser.h:3155:5 */

type tagMENUINFO = struct {
	cbSize          DWORD
	fMask           DWORD
	dwStyle         DWORD
	cyMax           UINT
	hbrBack         HBRUSH
	dwContextHelpID DWORD
	dwMenuData      ULONG_PTR
} /* winuser.h:3157:11 */

type MENUINFO = tagMENUINFO /* winuser.h:3165:5 */
type LPMENUINFO = uintptr   /* winuser.h:3165:14 */

type LPTPMPARAMS = uintptr /* winuser.h:3167:21 */
type LPCMENUINFO = uintptr /* winuser.h:3168:26 */

type tagMENUGETOBJECTINFO = struct {
	dwFlags DWORD
	uPos    UINT
	hmenu   HMENU
	riid    PVOID
	pvObj   PVOID
} /* winuser.h:3178:11 */

type MENUGETOBJECTINFO = tagMENUGETOBJECTINFO /* winuser.h:3184:5 */
type PMENUGETOBJECTINFO = uintptr             /* winuser.h:3184:23 */

type tagMENUITEMINFOA = struct {
	cbSize        UINT
	fMask         UINT
	fType         UINT
	fState        UINT
	wID           UINT
	hSubMenu      HMENU
	hbmpChecked   HBITMAP
	hbmpUnchecked HBITMAP
	dwItemData    ULONG_PTR
	dwTypeData    LPSTR
	cch           UINT
	hbmpItem      HBITMAP
} /* winuser.h:3186:11 */

type MENUITEMINFOA = tagMENUITEMINFOA /* winuser.h:3199:5 */
type LPMENUITEMINFOA = uintptr        /* winuser.h:3199:19 */

type tagMENUITEMINFOW = struct {
	cbSize        UINT
	fMask         UINT
	fType         UINT
	fState        UINT
	wID           UINT
	hSubMenu      HMENU
	hbmpChecked   HBITMAP
	hbmpUnchecked HBITMAP
	dwItemData    ULONG_PTR
	dwTypeData    LPWSTR
	cch           UINT
	hbmpItem      HBITMAP
} /* winuser.h:3201:11 */

type MENUITEMINFOW = tagMENUITEMINFOW /* winuser.h:3214:5 */
type LPMENUITEMINFOW = uintptr        /* winuser.h:3214:19 */

type MENUITEMINFO = MENUITEMINFOW     /* winuser.h:3216:3 */
type LPMENUITEMINFO = LPMENUITEMINFOW /* winuser.h:3217:3 */

type LPCMENUITEMINFOA = uintptr /* winuser.h:3219:31 */
type LPCMENUITEMINFOW = uintptr /* winuser.h:3220:31 */

type LPCMENUITEMINFO = LPCMENUITEMINFOW /* winuser.h:3222:3 */

type tagDROPSTRUCT = struct {
	hwndSource    HWND
	hwndSink      HWND
	wFmt          DWORD
	dwData        ULONG_PTR
	ptDrop        POINT
	dwControlData DWORD
} /* winuser.h:3270:11 */

type DROPSTRUCT = tagDROPSTRUCT /* winuser.h:3277:5 */
type PDROPSTRUCT = uintptr      /* winuser.h:3277:16 */
type LPDROPSTRUCT = uintptr     /* winuser.h:3277:29 */

type tagDRAWTEXTPARAMS = struct {
	cbSize        UINT
	iTabLength    int32
	iLeftMargin   int32
	iRightMargin  int32
	uiLengthDrawn UINT
} /* winuser.h:3324:11 */

type DRAWTEXTPARAMS = tagDRAWTEXTPARAMS /* winuser.h:3330:5 */
type LPDRAWTEXTPARAMS = uintptr         /* winuser.h:3330:20 */

type tagHELPINFO = struct {
	cbSize       UINT
	iContextType int32
	iCtrlId      int32
	hItemHandle  HANDLE
	dwContextId  DWORD_PTR
	MousePos     POINT
} /* winuser.h:3507:11 */

type HELPINFO = tagHELPINFO /* winuser.h:3514:5 */
type LPHELPINFO = uintptr   /* winuser.h:3514:14 */

type MSGBOXCALLBACK = uintptr /* winuser.h:3571:16 */

type tagMSGBOXPARAMSA = struct {
	cbSize             UINT
	hwndOwner          HWND
	hInstance          HINSTANCE
	lpszText           LPCSTR
	lpszCaption        LPCSTR
	dwStyle            DWORD
	lpszIcon           LPCSTR
	dwContextHelpId    DWORD_PTR
	lpfnMsgBoxCallback MSGBOXCALLBACK
	dwLanguageId       DWORD
} /* winuser.h:3573:11 */

type MSGBOXPARAMSA = tagMSGBOXPARAMSA /* winuser.h:3584:5 */
type PMSGBOXPARAMSA = uintptr         /* winuser.h:3584:19 */
type LPMSGBOXPARAMSA = uintptr        /* winuser.h:3584:35 */

type tagMSGBOXPARAMSW = struct {
	cbSize             UINT
	hwndOwner          HWND
	hInstance          HINSTANCE
	lpszText           LPCWSTR
	lpszCaption        LPCWSTR
	dwStyle            DWORD
	lpszIcon           LPCWSTR
	dwContextHelpId    DWORD_PTR
	lpfnMsgBoxCallback MSGBOXCALLBACK
	dwLanguageId       DWORD
} /* winuser.h:3586:11 */

type MSGBOXPARAMSW = tagMSGBOXPARAMSW /* winuser.h:3597:5 */
type PMSGBOXPARAMSW = uintptr         /* winuser.h:3597:19 */
type LPMSGBOXPARAMSW = uintptr        /* winuser.h:3597:35 */

type MSGBOXPARAMS = MSGBOXPARAMSW     /* winuser.h:3599:3 */
type PMSGBOXPARAMS = PMSGBOXPARAMSW   /* winuser.h:3600:3 */
type LPMSGBOXPARAMS = LPMSGBOXPARAMSW /* winuser.h:3601:3 */

type MENUITEMTEMPLATEHEADER = struct {
	versionNumber WORD
	offset        WORD
}                                      /* winuser.h:3910:5 */
type PMENUITEMTEMPLATEHEADER = uintptr /* winuser.h:3910:28 */

type MENUITEMTEMPLATE = struct {
	mtOption WORD
	mtID     WORD
	mtString [1]WCHAR
}                                /* winuser.h:3916:5 */
type PMENUITEMTEMPLATE = uintptr /* winuser.h:3916:22 */

type _ICONINFO = struct {
	fIcon    WINBOOL
	xHotspot DWORD
	yHotspot DWORD
	hbmMask  HBITMAP
	hbmColor HBITMAP
} /* winuser.h:3989:11 */

type ICONINFO = _ICONINFO /* winuser.h:3995:5 */
type PICONINFO = uintptr  /* winuser.h:3996:20 */

type tagCURSORSHAPE = struct {
	xHotSpot  int32
	yHotSpot  int32
	cx        int32
	cy        int32
	cbWidth   int32
	Planes    BYTE
	BitsPixel BYTE
	_         [2]byte
} /* winuser.h:4013:11 */

type CURSORSHAPE = tagCURSORSHAPE /* winuser.h:4021:5 */
type LPCURSORSHAPE = uintptr      /* winuser.h:4021:17 */

type tagSCROLLINFO = struct {
	cbSize    UINT
	fMask     UINT
	nMin      int32
	nMax      int32
	nPage     UINT
	nPos      int32
	nTrackPos int32
} /* winuser.h:4701:11 */

type SCROLLINFO = tagSCROLLINFO /* winuser.h:4709:5 */
type LPSCROLLINFO = uintptr     /* winuser.h:4709:16 */
type LPCSCROLLINFO = uintptr    /* winuser.h:4710:28 */

type tagMDICREATESTRUCTA = struct {
	szClass LPCSTR
	szTitle LPCSTR
	hOwner  HANDLE
	x       int32
	y       int32
	cx      int32
	cy      int32
	style   DWORD
	lParam  LPARAM
} /* winuser.h:4728:11 */

type MDICREATESTRUCTA = tagMDICREATESTRUCTA /* winuser.h:4738:5 */
type LPMDICREATESTRUCTA = uintptr           /* winuser.h:4738:22 */

type tagMDICREATESTRUCTW = struct {
	szClass LPCWSTR
	szTitle LPCWSTR
	hOwner  HANDLE
	x       int32
	y       int32
	cx      int32
	cy      int32
	style   DWORD
	lParam  LPARAM
} /* winuser.h:4740:11 */

type MDICREATESTRUCTW = tagMDICREATESTRUCTW /* winuser.h:4750:5 */
type LPMDICREATESTRUCTW = uintptr           /* winuser.h:4750:22 */

type MDICREATESTRUCT = MDICREATESTRUCTW     /* winuser.h:4752:3 */
type LPMDICREATESTRUCT = LPMDICREATESTRUCTW /* winuser.h:4753:3 */

type tagCLIENTCREATESTRUCT = struct {
	hWindowMenu  HANDLE
	idFirstChild UINT
} /* winuser.h:4755:11 */

type CLIENTCREATESTRUCT = tagCLIENTCREATESTRUCT /* winuser.h:4758:5 */
type LPCLIENTCREATESTRUCT = uintptr             /* winuser.h:4758:24 */

type HELPPOLY = DWORD /* winuser.h:4784:17 */

type tagMULTIKEYHELPA = struct {
	mkSize      DWORD
	mkKeylist   CHAR
	szKeyphrase [1]CHAR
	_           [2]byte
} /* winuser.h:4786:11 */

type MULTIKEYHELPA = tagMULTIKEYHELPA /* winuser.h:4790:5 */
type PMULTIKEYHELPA = uintptr         /* winuser.h:4790:19 */
type LPMULTIKEYHELPA = uintptr        /* winuser.h:4790:35 */

type tagMULTIKEYHELPW = struct {
	mkSize      DWORD
	mkKeylist   WCHAR
	szKeyphrase [1]WCHAR
} /* winuser.h:4792:11 */

type MULTIKEYHELPW = tagMULTIKEYHELPW /* winuser.h:4796:5 */
type PMULTIKEYHELPW = uintptr         /* winuser.h:4796:19 */
type LPMULTIKEYHELPW = uintptr        /* winuser.h:4796:35 */

type MULTIKEYHELP = MULTIKEYHELPW     /* winuser.h:4798:3 */
type PMULTIKEYHELP = PMULTIKEYHELPW   /* winuser.h:4799:3 */
type LPMULTIKEYHELP = LPMULTIKEYHELPW /* winuser.h:4800:3 */

type tagHELPWININFOA = struct {
	wStructSize int32
	x           int32
	y           int32
	dx          int32
	dy          int32
	wMax        int32
	rgchMember  [2]CHAR
	_           [2]byte
} /* winuser.h:4802:11 */

type HELPWININFOA = tagHELPWININFOA /* winuser.h:4810:5 */
type PHELPWININFOA = uintptr        /* winuser.h:4810:18 */
type LPHELPWININFOA = uintptr       /* winuser.h:4810:33 */

type tagHELPWININFOW = struct {
	wStructSize int32
	x           int32
	y           int32
	dx          int32
	dy          int32
	wMax        int32
	rgchMember  [2]WCHAR
} /* winuser.h:4812:11 */

type HELPWININFOW = tagHELPWININFOW /* winuser.h:4820:5 */
type PHELPWININFOW = uintptr        /* winuser.h:4820:18 */
type LPHELPWININFOW = uintptr       /* winuser.h:4820:33 */

type HELPWININFO = HELPWININFOW     /* winuser.h:4822:3 */
type PHELPWININFO = PHELPWININFOW   /* winuser.h:4823:3 */
type LPHELPWININFO = LPHELPWININFOW /* winuser.h:4824:3 */

type tagNONCLIENTMETRICSA = struct {
	cbSize           UINT
	iBorderWidth     int32
	iScrollWidth     int32
	iScrollHeight    int32
	iCaptionWidth    int32
	iCaptionHeight   int32
	lfCaptionFont    LOGFONTA
	iSmCaptionWidth  int32
	iSmCaptionHeight int32
	lfSmCaptionFont  LOGFONTA
	iMenuWidth       int32
	iMenuHeight      int32
	lfMenuFont       LOGFONTA
	lfStatusFont     LOGFONTA
	lfMessageFont    LOGFONTA
} /* winuser.h:5183:11 */

type NONCLIENTMETRICSA = tagNONCLIENTMETRICSA /* winuser.h:5202:5 */
type PNONCLIENTMETRICSA = uintptr             /* winuser.h:5202:23 */
type LPNONCLIENTMETRICSA = uintptr            /* winuser.h:5202:43 */

type tagNONCLIENTMETRICSW = struct {
	cbSize           UINT
	iBorderWidth     int32
	iScrollWidth     int32
	iScrollHeight    int32
	iCaptionWidth    int32
	iCaptionHeight   int32
	lfCaptionFont    LOGFONTW
	iSmCaptionWidth  int32
	iSmCaptionHeight int32
	lfSmCaptionFont  LOGFONTW
	iMenuWidth       int32
	iMenuHeight      int32
	lfMenuFont       LOGFONTW
	lfStatusFont     LOGFONTW
	lfMessageFont    LOGFONTW
} /* winuser.h:5204:11 */

type NONCLIENTMETRICSW = tagNONCLIENTMETRICSW /* winuser.h:5223:5 */
type PNONCLIENTMETRICSW = uintptr             /* winuser.h:5223:23 */
type LPNONCLIENTMETRICSW = uintptr            /* winuser.h:5223:43 */

type NONCLIENTMETRICS = NONCLIENTMETRICSW     /* winuser.h:5225:3 */
type PNONCLIENTMETRICS = PNONCLIENTMETRICSW   /* winuser.h:5226:3 */
type LPNONCLIENTMETRICS = LPNONCLIENTMETRICSW /* winuser.h:5227:3 */

type tagMINIMIZEDMETRICS = struct {
	cbSize   UINT
	iWidth   int32
	iHorzGap int32
	iVertGap int32
	iArrange int32
} /* winuser.h:5247:11 */

type MINIMIZEDMETRICS = tagMINIMIZEDMETRICS /* winuser.h:5253:5 */
type PMINIMIZEDMETRICS = uintptr            /* winuser.h:5253:22 */
type LPMINIMIZEDMETRICS = uintptr           /* winuser.h:5253:41 */

type tagICONMETRICSA = struct {
	cbSize       UINT
	iHorzSpacing int32
	iVertSpacing int32
	iTitleWrap   int32
	lfFont       LOGFONTA
} /* winuser.h:5257:11 */

type ICONMETRICSA = tagICONMETRICSA /* winuser.h:5263:5 */
type PICONMETRICSA = uintptr        /* winuser.h:5263:18 */
type LPICONMETRICSA = uintptr       /* winuser.h:5263:33 */

type tagICONMETRICSW = struct {
	cbSize       UINT
	iHorzSpacing int32
	iVertSpacing int32
	iTitleWrap   int32
	lfFont       LOGFONTW
} /* winuser.h:5265:11 */

type ICONMETRICSW = tagICONMETRICSW /* winuser.h:5271:5 */
type PICONMETRICSW = uintptr        /* winuser.h:5271:18 */
type LPICONMETRICSW = uintptr       /* winuser.h:5271:33 */

type ICONMETRICS = ICONMETRICSW     /* winuser.h:5273:3 */
type PICONMETRICS = PICONMETRICSW   /* winuser.h:5274:3 */
type LPICONMETRICS = LPICONMETRICSW /* winuser.h:5275:3 */

type tagANIMATIONINFO = struct {
	cbSize      UINT
	iMinAnimate int32
} /* winuser.h:5279:11 */

type ANIMATIONINFO = tagANIMATIONINFO /* winuser.h:5282:5 */
type LPANIMATIONINFO = uintptr        /* winuser.h:5282:19 */

type tagSERIALKEYSA = struct {
	cbSize         UINT
	dwFlags        DWORD
	lpszActivePort LPSTR
	lpszPort       LPSTR
	iBaudRate      UINT
	iPortState     UINT
	iActive        UINT
} /* winuser.h:5284:11 */

type SERIALKEYSA = tagSERIALKEYSA /* winuser.h:5292:5 */
type LPSERIALKEYSA = uintptr      /* winuser.h:5292:17 */

type tagSERIALKEYSW = struct {
	cbSize         UINT
	dwFlags        DWORD
	lpszActivePort LPWSTR
	lpszPort       LPWSTR
	iBaudRate      UINT
	iPortState     UINT
	iActive        UINT
} /* winuser.h:5294:11 */

type SERIALKEYSW = tagSERIALKEYSW /* winuser.h:5302:5 */
type LPSERIALKEYSW = uintptr      /* winuser.h:5302:17 */

type SERIALKEYS = SERIALKEYSW     /* winuser.h:5304:3 */
type LPSERIALKEYS = LPSERIALKEYSW /* winuser.h:5305:3 */

type tagHIGHCONTRASTA = struct {
	cbSize            UINT
	dwFlags           DWORD
	lpszDefaultScheme LPSTR
} /* winuser.h:5307:11 */

type HIGHCONTRASTA = tagHIGHCONTRASTA /* winuser.h:5311:5 */
type LPHIGHCONTRASTA = uintptr        /* winuser.h:5311:19 */

type tagHIGHCONTRASTW = struct {
	cbSize            UINT
	dwFlags           DWORD
	lpszDefaultScheme LPWSTR
} /* winuser.h:5313:11 */

type HIGHCONTRASTW = tagHIGHCONTRASTW /* winuser.h:5317:5 */
type LPHIGHCONTRASTW = uintptr        /* winuser.h:5317:19 */

type HIGHCONTRAST = HIGHCONTRASTW     /* winuser.h:5319:3 */
type LPHIGHCONTRAST = LPHIGHCONTRASTW /* winuser.h:5320:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// __declspec(selectany) must be applied to initialized objects on GCC 5 hence must not be used here.

type _VIDEOPARAMETERS = struct {
	Guid                  GUID
	dwOffset              ULONG
	dwCommand             ULONG
	dwFlags               ULONG
	dwMode                ULONG
	dwTVStandard          ULONG
	dwAvailableModes      ULONG
	dwAvailableTVStandard ULONG
	dwFlickerFilter       ULONG
	dwOverScanX           ULONG
	dwOverScanY           ULONG
	dwMaxUnscaledX        ULONG
	dwMaxUnscaledY        ULONG
	dwPositionX           ULONG
	dwPositionY           ULONG
	dwBrightness          ULONG
	dwContrast            ULONG
	dwCPType              ULONG
	dwCPCommand           ULONG
	dwCPStandard          ULONG
	dwCPKey               ULONG
	bCP_APSTriggerBits    ULONG
	bOEMCopyProtection    [256]UCHAR
} /* tvout.h:11:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// __declspec(selectany) must be applied to initialized objects on GCC 5 hence must not be used here.

type VIDEOPARAMETERS = _VIDEOPARAMETERS /* tvout.h:35:3 */
type PVIDEOPARAMETERS = uintptr         /* tvout.h:35:19 */
type LPVIDEOPARAMETERS = uintptr        /* tvout.h:35:37 */

type tagFILTERKEYS = struct {
	cbSize      UINT
	dwFlags     DWORD
	iWaitMSec   DWORD
	iDelayMSec  DWORD
	iRepeatMSec DWORD
	iBounceMSec DWORD
} /* winuser.h:5409:11 */

type FILTERKEYS = tagFILTERKEYS /* winuser.h:5416:5 */
type LPFILTERKEYS = uintptr     /* winuser.h:5416:16 */

type tagSTICKYKEYS = struct {
	cbSize  UINT
	dwFlags DWORD
} /* winuser.h:5428:11 */

type STICKYKEYS = tagSTICKYKEYS /* winuser.h:5431:5 */
type LPSTICKYKEYS = uintptr     /* winuser.h:5431:16 */

type tagMOUSEKEYS = struct {
	cbSize          UINT
	dwFlags         DWORD
	iMaxSpeed       DWORD
	iTimeToMaxSpeed DWORD
	iCtrlSpeed      DWORD
	dwReserved1     DWORD
	dwReserved2     DWORD
} /* winuser.h:5461:11 */

type MOUSEKEYS = tagMOUSEKEYS /* winuser.h:5469:5 */
type LPMOUSEKEYS = uintptr    /* winuser.h:5469:15 */

type tagACCESSTIMEOUT = struct {
	cbSize       UINT
	dwFlags      DWORD
	iTimeOutMSec DWORD
} /* winuser.h:5487:11 */

type ACCESSTIMEOUT = tagACCESSTIMEOUT /* winuser.h:5491:5 */
type LPACCESSTIMEOUT = uintptr        /* winuser.h:5491:19 */

type tagSOUNDSENTRYA = struct {
	cbSize                 UINT
	dwFlags                DWORD
	iFSTextEffect          DWORD
	iFSTextEffectMSec      DWORD
	iFSTextEffectColorBits DWORD
	iFSGrafEffect          DWORD
	iFSGrafEffectMSec      DWORD
	iFSGrafEffectColor     DWORD
	iWindowsEffect         DWORD
	iWindowsEffectMSec     DWORD
	lpszWindowsEffectDLL   LPSTR
	iWindowsEffectOrdinal  DWORD
} /* winuser.h:5512:11 */

type SOUNDSENTRYA = tagSOUNDSENTRYA /* winuser.h:5525:5 */
type LPSOUNDSENTRYA = uintptr       /* winuser.h:5525:18 */

type tagSOUNDSENTRYW = struct {
	cbSize                 UINT
	dwFlags                DWORD
	iFSTextEffect          DWORD
	iFSTextEffectMSec      DWORD
	iFSTextEffectColorBits DWORD
	iFSGrafEffect          DWORD
	iFSGrafEffectMSec      DWORD
	iFSGrafEffectColor     DWORD
	iWindowsEffect         DWORD
	iWindowsEffectMSec     DWORD
	lpszWindowsEffectDLL   LPWSTR
	iWindowsEffectOrdinal  DWORD
} /* winuser.h:5527:11 */

type SOUNDSENTRYW = tagSOUNDSENTRYW /* winuser.h:5540:5 */
type LPSOUNDSENTRYW = uintptr       /* winuser.h:5540:18 */

type SOUNDSENTRY = SOUNDSENTRYW     /* winuser.h:5542:3 */
type LPSOUNDSENTRY = LPSOUNDSENTRYW /* winuser.h:5543:3 */

type tagTOGGLEKEYS = struct {
	cbSize  UINT
	dwFlags DWORD
} /* winuser.h:5555:11 */

type TOGGLEKEYS = tagTOGGLEKEYS /* winuser.h:5558:5 */
type LPTOGGLEKEYS = uintptr     /* winuser.h:5558:16 */

type tagMONITORINFO = struct {
	cbSize    DWORD
	rcMonitor RECT
	rcWork    RECT
	dwFlags   DWORD
} /* winuser.h:5560:11 */

type MONITORINFO = tagMONITORINFO /* winuser.h:5565:5 */
type LPMONITORINFO = uintptr      /* winuser.h:5565:17 */

type tagMONITORINFOEXA = struct {
	__0 struct {
		cbSize    DWORD
		rcMonitor RECT
		rcWork    RECT
		dwFlags   DWORD
	}
	szDevice [32]CHAR
} /* winuser.h:5587:11 */

type MONITORINFOEXA = tagMONITORINFOEXA /* winuser.h:5595:5 */
type LPMONITORINFOEXA = uintptr         /* winuser.h:5595:20 */

type tagMONITORINFOEXW = struct {
	__0 struct {
		cbSize    DWORD
		rcMonitor RECT
		rcWork    RECT
		dwFlags   DWORD
	}
	szDevice [32]WCHAR
} /* winuser.h:5597:11 */

type MONITORINFOEXW = tagMONITORINFOEXW /* winuser.h:5605:5 */
type LPMONITORINFOEXW = uintptr         /* winuser.h:5605:20 */

type MONITORINFOEX = MONITORINFOEXW     /* winuser.h:5607:3 */
type LPMONITORINFOEX = LPMONITORINFOEXW /* winuser.h:5608:3 */

type MONITORENUMPROC = uintptr /* winuser.h:5611:19 */

type WINEVENTPROC = uintptr /* winuser.h:5653:16 */

type tagGUITHREADINFO = struct {
	cbSize        DWORD
	flags         DWORD
	hwndActive    HWND
	hwndFocus     HWND
	hwndCapture   HWND
	hwndMenuOwner HWND
	hwndMoveSize  HWND
	hwndCaret     HWND
	rcCaret       RECT
} /* winuser.h:5830:11 */

type GUITHREADINFO = tagGUITHREADINFO /* winuser.h:5840:5 */
type PGUITHREADINFO = uintptr         /* winuser.h:5840:19 */
type LPGUITHREADINFO = uintptr        /* winuser.h:5840:35 */

type tagCURSORINFO = struct {
	cbSize      DWORD
	flags       DWORD
	hCursor     HCURSOR
	ptScreenPos POINT
} /* winuser.h:5908:11 */

type CURSORINFO = tagCURSORINFO /* winuser.h:5913:5 */
type PCURSORINFO = uintptr      /* winuser.h:5913:16 */
type LPCURSORINFO = uintptr     /* winuser.h:5913:29 */

type tagWINDOWINFO = struct {
	cbSize          DWORD
	rcWindow        RECT
	rcClient        RECT
	dwStyle         DWORD
	dwExStyle       DWORD
	dwWindowStatus  DWORD
	cxWindowBorders UINT
	cyWindowBorders UINT
	atomWindowType  ATOM
	wCreatorVersion WORD
} /* winuser.h:5922:11 */

type WINDOWINFO = tagWINDOWINFO /* winuser.h:5933:5 */
type PWINDOWINFO = uintptr      /* winuser.h:5933:16 */
type LPWINDOWINFO = uintptr     /* winuser.h:5933:29 */

type tagTITLEBARINFO = struct {
	cbSize     DWORD
	rcTitleBar RECT
	rgstate    [6]DWORD
} /* winuser.h:5939:11 */

type TITLEBARINFO = tagTITLEBARINFO /* winuser.h:5943:5 */
type PTITLEBARINFO = uintptr        /* winuser.h:5943:18 */
type LPTITLEBARINFO = uintptr       /* winuser.h:5943:33 */

type tagMENUBARINFO = struct {
	cbSize      DWORD
	rcBar       RECT
	hMenu       HMENU
	hwndMenu    HWND
	fBarFocused uint8 /* WINBOOL fBarFocused: 1, WINBOOL fFocused: 1 */
	_           [3]byte
} /* winuser.h:5956:11 */

type MENUBARINFO = tagMENUBARINFO /* winuser.h:5963:5 */
type PMENUBARINFO = uintptr       /* winuser.h:5963:17 */
type LPMENUBARINFO = uintptr      /* winuser.h:5963:31 */

type tagSCROLLBARINFO = struct {
	cbSize        DWORD
	rcScrollBar   RECT
	dxyLineButton int32
	xyThumbTop    int32
	xyThumbBottom int32
	reserved      int32
	rgstate       [6]DWORD
} /* winuser.h:5967:11 */

type SCROLLBARINFO = tagSCROLLBARINFO /* winuser.h:5975:5 */
type PSCROLLBARINFO = uintptr         /* winuser.h:5975:19 */
type LPSCROLLBARINFO = uintptr        /* winuser.h:5975:35 */

type tagCOMBOBOXINFO = struct {
	cbSize      DWORD
	rcItem      RECT
	rcButton    RECT
	stateButton DWORD
	hwndCombo   HWND
	hwndItem    HWND
	hwndList    HWND
} /* winuser.h:5979:11 */

type COMBOBOXINFO = tagCOMBOBOXINFO /* winuser.h:5987:5 */
type PCOMBOBOXINFO = uintptr        /* winuser.h:5987:18 */
type LPCOMBOBOXINFO = uintptr       /* winuser.h:5987:33 */

type tagALTTABINFO = struct {
	cbSize    DWORD
	cItems    int32
	cColumns  int32
	cRows     int32
	iColFocus int32
	iRowFocus int32
	cxItem    int32
	cyItem    int32
	ptStart   POINT
} /* winuser.h:6004:11 */

type ALTTABINFO = tagALTTABINFO /* winuser.h:6014:5 */
type PALTTABINFO = uintptr      /* winuser.h:6014:16 */
type LPALTTABINFO = uintptr     /* winuser.h:6014:29 */

type HRAWINPUT__ = struct{ unused int32 } /* winuser.h:6028:3 */

type HRAWINPUT = uintptr /* winuser.h:6028:3 */

type tagRAWINPUTHEADER = struct {
	dwType  DWORD
	dwSize  DWORD
	hDevice HANDLE
	wParam  WPARAM
} /* winuser.h:6037:11 */

type RAWINPUTHEADER = tagRAWINPUTHEADER /* winuser.h:6042:5 */
type PRAWINPUTHEADER = uintptr          /* winuser.h:6042:20 */
type LPRAWINPUTHEADER = uintptr         /* winuser.h:6042:37 */

type tagRAWMOUSE = struct {
	usFlags            USHORT
	_                  [2]byte
	__4                struct{ ulButtons ULONG }
	ulRawButtons       ULONG
	lLastX             LONG
	lLastY             LONG
	ulExtraInformation ULONG
} /* winuser.h:6050:11 */

type RAWMOUSE = tagRAWMOUSE /* winuser.h:6063:5 */
type PRAWMOUSE = uintptr    /* winuser.h:6063:14 */
type LPRAWMOUSE = uintptr   /* winuser.h:6063:25 */

type tagRAWKEYBOARD = struct {
	MakeCode         USHORT
	Flags            USHORT
	Reserved         USHORT
	VKey             USHORT
	Message          UINT
	ExtraInformation ULONG
} /* winuser.h:6094:11 */

type RAWKEYBOARD = tagRAWKEYBOARD /* winuser.h:6101:5 */
type PRAWKEYBOARD = uintptr       /* winuser.h:6101:17 */
type LPRAWKEYBOARD = uintptr      /* winuser.h:6101:31 */

type tagRAWHID = struct {
	dwSizeHid DWORD
	dwCount   DWORD
	bRawData  [1]BYTE
	_         [3]byte
} /* winuser.h:6114:11 */

type RAWHID = tagRAWHID /* winuser.h:6118:5 */
type PRAWHID = uintptr  /* winuser.h:6118:12 */
type LPRAWHID = uintptr /* winuser.h:6118:21 */

type tagRAWINPUT = struct {
	header RAWINPUTHEADER
	data   struct{ mouse RAWMOUSE }
} /* winuser.h:6120:11 */

type RAWINPUT = tagRAWINPUT /* winuser.h:6127:5 */
type PRAWINPUT = uintptr    /* winuser.h:6127:14 */
type LPRAWINPUT = uintptr   /* winuser.h:6127:25 */

type tagRID_DEVICE_INFO_MOUSE = struct {
	dwId                DWORD
	dwNumberOfButtons   DWORD
	dwSampleRate        DWORD
	fHasHorizontalWheel WINBOOL
} /* winuser.h:6150:11 */

type RID_DEVICE_INFO_MOUSE = tagRID_DEVICE_INFO_MOUSE /* winuser.h:6155:5 */
type PRID_DEVICE_INFO_MOUSE = uintptr                 /* winuser.h:6155:27 */

type tagRID_DEVICE_INFO_KEYBOARD = struct {
	dwType                 DWORD
	dwSubType              DWORD
	dwKeyboardMode         DWORD
	dwNumberOfFunctionKeys DWORD
	dwNumberOfIndicators   DWORD
	dwNumberOfKeysTotal    DWORD
} /* winuser.h:6157:11 */

type RID_DEVICE_INFO_KEYBOARD = tagRID_DEVICE_INFO_KEYBOARD /* winuser.h:6164:5 */
type PRID_DEVICE_INFO_KEYBOARD = uintptr                    /* winuser.h:6164:30 */

type tagRID_DEVICE_INFO_HID = struct {
	dwVendorId      DWORD
	dwProductId     DWORD
	dwVersionNumber DWORD
	usUsagePage     USHORT
	usUsage         USHORT
} /* winuser.h:6166:11 */

type RID_DEVICE_INFO_HID = tagRID_DEVICE_INFO_HID /* winuser.h:6172:5 */
type PRID_DEVICE_INFO_HID = uintptr               /* winuser.h:6172:25 */

type tagRID_DEVICE_INFO = struct {
	cbSize DWORD
	dwType DWORD
	__8    struct {
		mouse RID_DEVICE_INFO_MOUSE
		_     [8]byte
	}
} /* winuser.h:6174:11 */

type RID_DEVICE_INFO = tagRID_DEVICE_INFO /* winuser.h:6182:5 */
type PRID_DEVICE_INFO = uintptr           /* winuser.h:6182:21 */
type LPRID_DEVICE_INFO = uintptr          /* winuser.h:6182:39 */

type tagRAWINPUTDEVICE = struct {
	usUsagePage USHORT
	usUsage     USHORT
	dwFlags     DWORD
	hwndTarget  HWND
} /* winuser.h:6190:11 */

type RAWINPUTDEVICE = tagRAWINPUTDEVICE /* winuser.h:6195:5 */
type PRAWINPUTDEVICE = uintptr          /* winuser.h:6195:20 */
type LPRAWINPUTDEVICE = uintptr         /* winuser.h:6195:37 */

type PCRAWINPUTDEVICE = uintptr /* winuser.h:6197:32 */

type tagRAWINPUTDEVICELIST = struct {
	hDevice HANDLE
	dwType  DWORD
} /* winuser.h:6224:11 */

type RAWINPUTDEVICELIST = tagRAWINPUTDEVICELIST /* winuser.h:6227:5 */
type PRAWINPUTDEVICELIST = uintptr              /* winuser.h:6227:24 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type LGRPID = DWORD  /* winnls.h:644:17 */
type LCTYPE = DWORD  /* winnls.h:645:17 */
type CALTYPE = DWORD /* winnls.h:646:17 */
type CALID = DWORD   /* winnls.h:647:17 */

type _cpinfo = struct {
	MaxCharSize UINT
	DefaultChar [2]BYTE
	LeadByte    [12]BYTE
	_           [2]byte
} /* winnls.h:649:11 */

type CPINFO = _cpinfo   /* winnls.h:653:5 */
type LPCPINFO = uintptr /* winnls.h:653:12 */
type _cpinfoexA = struct {
	MaxCharSize        UINT
	DefaultChar        [2]BYTE
	LeadByte           [12]BYTE
	UnicodeDefaultChar WCHAR
	CodePage           UINT
	CodePageName       [260]CHAR
} /* winnls.h:654:11 */

type CPINFOEXA = _cpinfoexA /* winnls.h:661:5 */
type LPCPINFOEXA = uintptr  /* winnls.h:661:15 */

type _cpinfoexW = struct {
	MaxCharSize        UINT
	DefaultChar        [2]BYTE
	LeadByte           [12]BYTE
	UnicodeDefaultChar WCHAR
	CodePage           UINT
	CodePageName       [260]WCHAR
} /* winnls.h:663:11 */

type CPINFOEXW = _cpinfoexW /* winnls.h:670:5 */
type LPCPINFOEXW = uintptr  /* winnls.h:670:15 */

type CPINFOEX = CPINFOEXW     /* winnls.h:672:3 */
type LPCPINFOEX = LPCPINFOEXW /* winnls.h:673:3 */

type _numberfmtA = struct {
	NumDigits     UINT
	LeadingZero   UINT
	Grouping      UINT
	lpDecimalSep  LPSTR
	lpThousandSep LPSTR
	NegativeOrder UINT
} /* winnls.h:675:11 */

type NUMBERFMTA = _numberfmtA /* winnls.h:682:5 */
type LPNUMBERFMTA = uintptr   /* winnls.h:682:16 */
type _numberfmtW = struct {
	NumDigits     UINT
	LeadingZero   UINT
	Grouping      UINT
	lpDecimalSep  LPWSTR
	lpThousandSep LPWSTR
	NegativeOrder UINT
} /* winnls.h:683:11 */

type NUMBERFMTW = _numberfmtW /* winnls.h:690:5 */
type LPNUMBERFMTW = uintptr   /* winnls.h:690:16 */

type NUMBERFMT = NUMBERFMTW     /* winnls.h:692:3 */
type LPNUMBERFMT = LPNUMBERFMTW /* winnls.h:693:3 */

type _currencyfmtA = struct {
	NumDigits        UINT
	LeadingZero      UINT
	Grouping         UINT
	lpDecimalSep     LPSTR
	lpThousandSep    LPSTR
	NegativeOrder    UINT
	PositiveOrder    UINT
	lpCurrencySymbol LPSTR
} /* winnls.h:695:11 */

type CURRENCYFMTA = _currencyfmtA /* winnls.h:704:5 */
type LPCURRENCYFMTA = uintptr     /* winnls.h:704:18 */

type _currencyfmtW = struct {
	NumDigits        UINT
	LeadingZero      UINT
	Grouping         UINT
	lpDecimalSep     LPWSTR
	lpThousandSep    LPWSTR
	NegativeOrder    UINT
	PositiveOrder    UINT
	lpCurrencySymbol LPWSTR
} /* winnls.h:706:11 */

type CURRENCYFMTW = _currencyfmtW /* winnls.h:715:5 */
type LPCURRENCYFMTW = uintptr     /* winnls.h:715:18 */

type CURRENCYFMT = CURRENCYFMTW     /* winnls.h:717:3 */
type LPCURRENCYFMT = LPCURRENCYFMTW /* winnls.h:718:3 */

type NLS_FUNCTION = DWORD /* winnls.h:724:17 */

type _nlsversioninfo = struct {
	dwNLSVersionInfoSize DWORD
	dwNLSVersion         DWORD
	dwDefinedVersion     DWORD
} /* winnls.h:735:11 */

type NLSVERSIONINFO = _nlsversioninfo /* winnls.h:739:5 */
type LPNLSVERSIONINFO = uintptr       /* winnls.h:739:20 */

type _nlsversioninfoex = struct {
	dwNLSVersionInfoSize DWORD
	dwNLSVersion         DWORD
	dwDefinedVersion     DWORD
	dwEffectiveId        DWORD
	guidCustomVersion    GUID
} /* winnls.h:742:11 */

type NLSVERSIONINFOEX = _nlsversioninfoex /* winnls.h:748:5 */
type LPNLSVERSIONINFOEX = uintptr         /* winnls.h:748:22 */

type GEOID = LONG     /* winnls.h:750:16 */
type GEOTYPE = DWORD  /* winnls.h:751:17 */
type GEOCLASS = DWORD /* winnls.h:752:17 */

type LANGUAGEGROUP_ENUMPROCA = uintptr   /* winnls.h:798:19 */
type LANGGROUPLOCALE_ENUMPROCA = uintptr /* winnls.h:799:19 */
type UILANGUAGE_ENUMPROCA = uintptr      /* winnls.h:800:19 */
type CODEPAGE_ENUMPROCA = uintptr        /* winnls.h:801:19 */
type DATEFMT_ENUMPROCA = uintptr         /* winnls.h:802:19 */
type DATEFMT_ENUMPROCEXA = uintptr       /* winnls.h:803:19 */
type TIMEFMT_ENUMPROCA = uintptr         /* winnls.h:804:19 */
type CALINFO_ENUMPROCA = uintptr         /* winnls.h:805:19 */
type CALINFO_ENUMPROCEXA = uintptr       /* winnls.h:806:19 */
type LOCALE_ENUMPROCA = uintptr          /* winnls.h:807:19 */
type LOCALE_ENUMPROCW = uintptr          /* winnls.h:808:19 */
type LANGUAGEGROUP_ENUMPROCW = uintptr   /* winnls.h:809:19 */
type LANGGROUPLOCALE_ENUMPROCW = uintptr /* winnls.h:810:19 */
type UILANGUAGE_ENUMPROCW = uintptr      /* winnls.h:811:19 */
type CODEPAGE_ENUMPROCW = uintptr        /* winnls.h:812:19 */
type DATEFMT_ENUMPROCW = uintptr         /* winnls.h:813:19 */
type DATEFMT_ENUMPROCEXW = uintptr       /* winnls.h:814:19 */
type TIMEFMT_ENUMPROCW = uintptr         /* winnls.h:815:19 */
type CALINFO_ENUMPROCW = uintptr         /* winnls.h:816:19 */
type CALINFO_ENUMPROCEXW = uintptr       /* winnls.h:817:19 */
type GEO_ENUMPROC = uintptr              /* winnls.h:818:19 */

type _FILEMUIINFO = struct {
	dwSize               DWORD
	dwVersion            DWORD
	dwFileType           DWORD
	pChecksum            [16]BYTE
	pServiceChecksum     [16]BYTE
	dwLanguageNameOffset DWORD
	dwTypeIDMainSize     DWORD
	dwTypeIDMainOffset   DWORD
	dwTypeNameMainOffset DWORD
	dwTypeIDMUISize      DWORD
	dwTypeIDMUIOffset    DWORD
	dwTypeNameMUIOffset  DWORD
	abBuffer             [8]BYTE
} /* winnls.h:869:11 */

type FILEMUIINFO = _FILEMUIINFO /* winnls.h:883:5 */
type PFILEMUIINFO = uintptr     /* winnls.h:883:17 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _COORD = struct {
	X SHORT
	Y SHORT
} /* wincon.h:17:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type COORD = _COORD   /* wincon.h:20:5 */
type PCOORD = uintptr /* wincon.h:20:11 */

type _SMALL_RECT = struct {
	Left   SHORT
	Top    SHORT
	Right  SHORT
	Bottom SHORT
} /* wincon.h:22:11 */

type SMALL_RECT = _SMALL_RECT /* wincon.h:27:5 */
type PSMALL_RECT = uintptr    /* wincon.h:27:16 */

type _KEY_EVENT_RECORD = struct {
	bKeyDown          WINBOOL
	wRepeatCount      WORD
	wVirtualKeyCode   WORD
	wVirtualScanCode  WORD
	uChar             struct{ UnicodeChar WCHAR }
	dwControlKeyState DWORD
} /* wincon.h:29:11 */

type KEY_EVENT_RECORD = _KEY_EVENT_RECORD /* wincon.h:39:5 */
type PKEY_EVENT_RECORD = uintptr          /* wincon.h:39:22 */

type _MOUSE_EVENT_RECORD = struct {
	dwMousePosition   COORD
	dwButtonState     DWORD
	dwControlKeyState DWORD
	dwEventFlags      DWORD
} /* wincon.h:58:11 */

type MOUSE_EVENT_RECORD = _MOUSE_EVENT_RECORD /* wincon.h:63:5 */
type PMOUSE_EVENT_RECORD = uintptr            /* wincon.h:63:24 */

type _WINDOW_BUFFER_SIZE_RECORD = struct{ dwSize COORD } /* wincon.h:78:11 */

type WINDOW_BUFFER_SIZE_RECORD = _WINDOW_BUFFER_SIZE_RECORD /* wincon.h:80:5 */
type PWINDOW_BUFFER_SIZE_RECORD = uintptr                   /* wincon.h:80:31 */

type _MENU_EVENT_RECORD = struct{ dwCommandId UINT } /* wincon.h:82:11 */

type MENU_EVENT_RECORD = _MENU_EVENT_RECORD /* wincon.h:84:5 */
type PMENU_EVENT_RECORD = uintptr           /* wincon.h:84:23 */

type _FOCUS_EVENT_RECORD = struct{ bSetFocus WINBOOL } /* wincon.h:86:11 */

type FOCUS_EVENT_RECORD = _FOCUS_EVENT_RECORD /* wincon.h:88:5 */
type PFOCUS_EVENT_RECORD = uintptr            /* wincon.h:88:24 */

type _INPUT_RECORD = struct {
	EventType WORD
	_         [2]byte
	Event     struct{ KeyEvent KEY_EVENT_RECORD }
} /* wincon.h:90:11 */

type INPUT_RECORD = _INPUT_RECORD /* wincon.h:99:5 */
type PINPUT_RECORD = uintptr      /* wincon.h:99:18 */

type _CHAR_INFO = struct {
	Char       struct{ UnicodeChar WCHAR }
	Attributes WORD
} /* wincon.h:107:11 */

type CHAR_INFO = _CHAR_INFO /* wincon.h:113:5 */
type PCHAR_INFO = uintptr   /* wincon.h:113:15 */

type _CONSOLE_SCREEN_BUFFER_INFO = struct {
	dwSize              COORD
	dwCursorPosition    COORD
	wAttributes         WORD
	srWindow            SMALL_RECT
	dwMaximumWindowSize COORD
} /* wincon.h:133:11 */

type CONSOLE_SCREEN_BUFFER_INFO = _CONSOLE_SCREEN_BUFFER_INFO /* wincon.h:139:5 */
type PCONSOLE_SCREEN_BUFFER_INFO = uintptr                    /* wincon.h:139:32 */

type _CONSOLE_CURSOR_INFO = struct {
	dwSize   DWORD
	bVisible WINBOOL
} /* wincon.h:141:11 */

type CONSOLE_CURSOR_INFO = _CONSOLE_CURSOR_INFO /* wincon.h:144:5 */
type PCONSOLE_CURSOR_INFO = uintptr             /* wincon.h:144:25 */

type _CONSOLE_FONT_INFO = struct {
	nFont      DWORD
	dwFontSize COORD
} /* wincon.h:146:11 */

type CONSOLE_FONT_INFO = _CONSOLE_FONT_INFO /* wincon.h:149:5 */
type PCONSOLE_FONT_INFO = uintptr           /* wincon.h:149:23 */

type _CONSOLE_SELECTION_INFO = struct {
	dwFlags           DWORD
	dwSelectionAnchor COORD
	srSelection       SMALL_RECT
} /* wincon.h:151:11 */

type CONSOLE_SELECTION_INFO = _CONSOLE_SELECTION_INFO /* wincon.h:155:5 */
type PCONSOLE_SELECTION_INFO = uintptr                /* wincon.h:155:28 */

type PHANDLER_ROUTINE = uintptr /* wincon.h:163:19 */

type _CONSOLE_FONT_INFOEX = struct {
	cbSize     ULONG
	nFont      DWORD
	dwFontSize COORD
	FontFamily UINT
	FontWeight UINT
	FaceName   [32]WCHAR
} /* wincon.h:297:9 */

type CONSOLE_FONT_INFOEX = _CONSOLE_FONT_INFOEX /* wincon.h:304:3 */
type PCONSOLE_FONT_INFOEX = uintptr             /* wincon.h:304:24 */

type _CONSOLE_HISTORY_INFO = struct {
	cbSize                 UINT
	HistoryBufferSize      UINT
	NumberOfHistoryBuffers UINT
	dwFlags                DWORD
} /* wincon.h:306:9 */

type CONSOLE_HISTORY_INFO = _CONSOLE_HISTORY_INFO /* wincon.h:311:3 */
type PCONSOLE_HISTORY_INFO = uintptr              /* wincon.h:311:25 */

type _CONSOLE_READCONSOLE_CONTROL = struct {
	nLength           ULONG
	nInitialChars     ULONG
	dwCtrlWakeupMask  ULONG
	dwControlKeyState ULONG
} /* wincon.h:313:9 */

type CONSOLE_READCONSOLE_CONTROL = _CONSOLE_READCONSOLE_CONTROL /* wincon.h:318:3 */
type PCONSOLE_READCONSOLE_CONTROL = uintptr                     /* wincon.h:318:32 */

type _CONSOLE_SCREEN_BUFFER_INFOEX = struct {
	cbSize               ULONG
	dwSize               COORD
	dwCursorPosition     COORD
	wAttributes          WORD
	srWindow             SMALL_RECT
	dwMaximumWindowSize  COORD
	wPopupAttributes     WORD
	bFullscreenSupported WINBOOL
	ColorTable           [16]COLORREF
} /* wincon.h:320:9 */

type CONSOLE_SCREEN_BUFFER_INFOEX = _CONSOLE_SCREEN_BUFFER_INFOEX /* wincon.h:330:3 */
type PCONSOLE_SCREEN_BUFFER_INFOEX = uintptr                      /* wincon.h:330:33 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type tagVS_FIXEDFILEINFO = struct {
	dwSignature        DWORD
	dwStrucVersion     DWORD
	dwFileVersionMS    DWORD
	dwFileVersionLS    DWORD
	dwProductVersionMS DWORD
	dwProductVersionLS DWORD
	dwFileFlagsMask    DWORD
	dwFileFlags        DWORD
	dwFileOS           DWORD
	dwFileType         DWORD
	dwFileSubtype      DWORD
	dwFileDateMS       DWORD
	dwFileDateLS       DWORD
} /* winver.h:113:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO /* winver.h:128:5 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type REGSAM = ACCESS_MASK /* winreg.h:35:23 */
type LSTATUS = LONG       /* winreg.h:36:16 */

type val_context = struct {
	valuelen      int32
	value_context LPVOID
	val_buff_ptr  LPVOID
} /* winreg.h:54:3 */

type PVALCONTEXT = uintptr /* winreg.h:60:30 */

type pvalueA = struct {
	pv_valuename     LPSTR
	pv_valuelen      int32
	pv_value_context LPVOID
	pv_type          DWORD
} /* winreg.h:62:11 */

type PVALUEA = pvalueA  /* winreg.h:67:4 */
type PPVALUEA = uintptr /* winreg.h:67:12 */

type pvalueW = struct {
	pv_valuename     LPWSTR
	pv_valuelen      int32
	pv_value_context LPVOID
	pv_type          DWORD
} /* winreg.h:69:11 */

type PVALUEW = pvalueW  /* winreg.h:74:4 */
type PPVALUEW = uintptr /* winreg.h:74:12 */

type PVALUE = PVALUEW   /* winreg.h:76:3 */
type PPVALUE = PPVALUEW /* winreg.h:77:3 */

type PQUERYHANDLER = uintptr /* winreg.h:81:24 */

type provider_info = struct {
	pi_R0_1val     PQUERYHANDLER
	pi_R0_allvals  PQUERYHANDLER
	pi_R3_1val     PQUERYHANDLER
	pi_R3_allvals  PQUERYHANDLER
	pi_flags       DWORD
	pi_key_context LPVOID
} /* winreg.h:83:11 */

type REG_PROVIDER = provider_info /* winreg.h:90:5 */

type PPROVIDER = uintptr /* winreg.h:92:32 */

type value_entA = struct {
	ve_valuename LPSTR
	ve_valuelen  DWORD
	ve_valueptr  DWORD_PTR
	ve_type      DWORD
} /* winreg.h:94:11 */

type VALENTA = value_entA /* winreg.h:99:5 */
type PVALENTA = uintptr   /* winreg.h:99:13 */

type value_entW = struct {
	ve_valuename LPWSTR
	ve_valuelen  DWORD
	ve_valueptr  DWORD_PTR
	ve_type      DWORD
} /* winreg.h:101:11 */

type VALENTW = value_entW /* winreg.h:106:5 */
type PVALENTW = uintptr   /* winreg.h:106:13 */

type VALENT = VALENTW   /* winreg.h:108:3 */
type PVALENT = PVALENTW /* winreg.h:109:3 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _NETRESOURCEA = struct {
	dwScope       DWORD
	dwType        DWORD
	dwDisplayType DWORD
	dwUsage       DWORD
	lpLocalName   LPSTR
	lpRemoteName  LPSTR
	lpComment     LPSTR
	lpProvider    LPSTR
} /* winnetwk.h:53:11 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type NETRESOURCEA = _NETRESOURCEA /* winnetwk.h:62:5 */
type LPNETRESOURCEA = uintptr     /* winnetwk.h:62:18 */
type _NETRESOURCEW = struct {
	dwScope       DWORD
	dwType        DWORD
	dwDisplayType DWORD
	dwUsage       DWORD
	lpLocalName   LPWSTR
	lpRemoteName  LPWSTR
	lpComment     LPWSTR
	lpProvider    LPWSTR
} /* winnetwk.h:63:11 */

type NETRESOURCEW = _NETRESOURCEW /* winnetwk.h:72:5 */
type LPNETRESOURCEW = uintptr     /* winnetwk.h:72:18 */

type NETRESOURCE = NETRESOURCEW     /* winnetwk.h:74:3 */
type LPNETRESOURCE = LPNETRESOURCEW /* winnetwk.h:75:3 */

type _CONNECTDLGSTRUCTA = struct {
	cbStructure DWORD
	hwndOwner   HWND
	lpConnRes   LPNETRESOURCEA
	dwFlags     DWORD
	dwDevNum    DWORD
} /* winnetwk.h:129:11 */

type CONNECTDLGSTRUCTA = _CONNECTDLGSTRUCTA /* winnetwk.h:135:5 */
type LPCONNECTDLGSTRUCTA = uintptr          /* winnetwk.h:135:23 */

type _CONNECTDLGSTRUCTW = struct {
	cbStructure DWORD
	hwndOwner   HWND
	lpConnRes   LPNETRESOURCEW
	dwFlags     DWORD
	dwDevNum    DWORD
} /* winnetwk.h:137:11 */

type CONNECTDLGSTRUCTW = _CONNECTDLGSTRUCTW /* winnetwk.h:143:5 */
type LPCONNECTDLGSTRUCTW = uintptr          /* winnetwk.h:143:23 */

type CONNECTDLGSTRUCT = CONNECTDLGSTRUCTW     /* winnetwk.h:145:3 */
type LPCONNECTDLGSTRUCT = LPCONNECTDLGSTRUCTW /* winnetwk.h:146:3 */

type _DISCDLGSTRUCTA = struct {
	cbStructure  DWORD
	hwndOwner    HWND
	lpLocalName  LPSTR
	lpRemoteName LPSTR
	dwFlags      DWORD
} /* winnetwk.h:161:11 */

type DISCDLGSTRUCTA = _DISCDLGSTRUCTA /* winnetwk.h:167:5 */
type LPDISCDLGSTRUCTA = uintptr       /* winnetwk.h:167:20 */

type _DISCDLGSTRUCTW = struct {
	cbStructure  DWORD
	hwndOwner    HWND
	lpLocalName  LPWSTR
	lpRemoteName LPWSTR
	dwFlags      DWORD
} /* winnetwk.h:169:11 */

type DISCDLGSTRUCTW = _DISCDLGSTRUCTW /* winnetwk.h:175:5 */
type LPDISCDLGSTRUCTW = uintptr       /* winnetwk.h:175:20 */

type DISCDLGSTRUCT = DISCDLGSTRUCTW     /* winnetwk.h:177:3 */
type LPDISCDLGSTRUCT = LPDISCDLGSTRUCTW /* winnetwk.h:178:3 */

type _UNIVERSAL_NAME_INFOA = struct{ lpUniversalName LPSTR } /* winnetwk.h:204:11 */

type UNIVERSAL_NAME_INFOA = _UNIVERSAL_NAME_INFOA /* winnetwk.h:206:5 */
type LPUNIVERSAL_NAME_INFOA = uintptr             /* winnetwk.h:206:26 */

type _UNIVERSAL_NAME_INFOW = struct{ lpUniversalName LPWSTR } /* winnetwk.h:208:11 */

type UNIVERSAL_NAME_INFOW = _UNIVERSAL_NAME_INFOW /* winnetwk.h:210:5 */
type LPUNIVERSAL_NAME_INFOW = uintptr             /* winnetwk.h:210:26 */

type UNIVERSAL_NAME_INFO = UNIVERSAL_NAME_INFOW     /* winnetwk.h:212:3 */
type LPUNIVERSAL_NAME_INFO = LPUNIVERSAL_NAME_INFOW /* winnetwk.h:213:3 */

type _REMOTE_NAME_INFOA = struct {
	lpUniversalName  LPSTR
	lpConnectionName LPSTR
	lpRemainingPath  LPSTR
} /* winnetwk.h:215:11 */

type REMOTE_NAME_INFOA = _REMOTE_NAME_INFOA /* winnetwk.h:219:5 */
type LPREMOTE_NAME_INFOA = uintptr          /* winnetwk.h:219:23 */

type _REMOTE_NAME_INFOW = struct {
	lpUniversalName  LPWSTR
	lpConnectionName LPWSTR
	lpRemainingPath  LPWSTR
} /* winnetwk.h:221:11 */

type REMOTE_NAME_INFOW = _REMOTE_NAME_INFOW /* winnetwk.h:225:5 */
type LPREMOTE_NAME_INFOW = uintptr          /* winnetwk.h:225:23 */

type REMOTE_NAME_INFO = REMOTE_NAME_INFOW     /* winnetwk.h:227:3 */
type LPREMOTE_NAME_INFO = LPREMOTE_NAME_INFOW /* winnetwk.h:228:3 */

type _NETINFOSTRUCT = struct {
	cbStructure       DWORD
	dwProviderVersion DWORD
	dwStatus          DWORD
	dwCharacteristics DWORD
	dwHandle          ULONG_PTR
	wNetType          WORD
	_                 [2]byte
	dwPrinters        DWORD
	dwDrives          DWORD
} /* winnetwk.h:247:11 */

type NETINFOSTRUCT = _NETINFOSTRUCT /* winnetwk.h:256:5 */
type LPNETINFOSTRUCT = uintptr      /* winnetwk.h:256:19 */

type PFNGETPROFILEPATHA = uintptr /* winnetwk.h:267:16 */
type PFNGETPROFILEPATHW = uintptr /* winnetwk.h:268:16 */

type PFNRECONCILEPROFILEA = uintptr /* winnetwk.h:272:16 */
type PFNRECONCILEPROFILEW = uintptr /* winnetwk.h:273:16 */

type PFNPROCESSPOLICIESA = uintptr /* winnetwk.h:280:19 */
type PFNPROCESSPOLICIESW = uintptr /* winnetwk.h:281:19 */

type _NETCONNECTINFOSTRUCT = struct {
	cbStructure   DWORD
	dwFlags       DWORD
	dwSpeed       DWORD
	dwDelay       DWORD
	dwOptDataSize DWORD
} /* winnetwk.h:335:11 */

type NETCONNECTINFOSTRUCT = _NETCONNECTINFOSTRUCT /* winnetwk.h:341:5 */
type LPNETCONNECTINFOSTRUCT = uintptr             /* winnetwk.h:341:26 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _SERVICE_DESCRIPTIONA = struct{ lpDescription LPSTR } /* winsvc.h:95:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type SERVICE_DESCRIPTIONA = _SERVICE_DESCRIPTIONA /* winsvc.h:97:5 */
type LPSERVICE_DESCRIPTIONA = uintptr             /* winsvc.h:97:26 */

type _SERVICE_DESCRIPTIONW = struct{ lpDescription LPWSTR } /* winsvc.h:99:11 */

type SERVICE_DESCRIPTIONW = _SERVICE_DESCRIPTIONW /* winsvc.h:101:5 */
type LPSERVICE_DESCRIPTIONW = uintptr             /* winsvc.h:101:26 */

type SERVICE_DESCRIPTION = SERVICE_DESCRIPTIONW     /* winsvc.h:103:3 */
type LPSERVICE_DESCRIPTION = LPSERVICE_DESCRIPTIONW /* winsvc.h:104:3 */

type SC_ACTION_TYPE = uint32 /* winsvc.h:108:5 */

type _SC_ACTION = struct {
	Type  SC_ACTION_TYPE
	Delay DWORD
} /* winsvc.h:110:11 */

type SC_ACTION = _SC_ACTION /* winsvc.h:113:5 */
type LPSC_ACTION = uintptr  /* winsvc.h:113:15 */

type _SERVICE_FAILURE_ACTIONSA = struct {
	dwResetPeriod DWORD
	lpRebootMsg   LPSTR
	lpCommand     LPSTR
	cActions      DWORD
	lpsaActions   uintptr
} /* winsvc.h:115:11 */

type SERVICE_FAILURE_ACTIONSA = _SERVICE_FAILURE_ACTIONSA /* winsvc.h:121:5 */
type LPSERVICE_FAILURE_ACTIONSA = uintptr                 /* winsvc.h:121:30 */

type _SERVICE_FAILURE_ACTIONSW = struct {
	dwResetPeriod DWORD
	lpRebootMsg   LPWSTR
	lpCommand     LPWSTR
	cActions      DWORD
	lpsaActions   uintptr
} /* winsvc.h:123:11 */

type SERVICE_FAILURE_ACTIONSW = _SERVICE_FAILURE_ACTIONSW /* winsvc.h:129:5 */
type LPSERVICE_FAILURE_ACTIONSW = uintptr                 /* winsvc.h:129:30 */

type SERVICE_FAILURE_ACTIONS = SERVICE_FAILURE_ACTIONSW     /* winsvc.h:131:3 */
type LPSERVICE_FAILURE_ACTIONS = LPSERVICE_FAILURE_ACTIONSW /* winsvc.h:132:3 */

type SC_HANDLE__ = struct{ unused int32 } /* winsvc.h:134:3 */

type SC_HANDLE = uintptr   /* winsvc.h:134:3 */
type LPSC_HANDLE = uintptr /* winsvc.h:135:21 */

type SERVICE_STATUS_HANDLE__ = struct{ unused int32 } /* winsvc.h:137:3 */

type SERVICE_STATUS_HANDLE = uintptr /* winsvc.h:137:3 */

type SC_STATUS_TYPE = uint32 /* winsvc.h:141:5 */

type SC_ENUM_TYPE = uint32 /* winsvc.h:145:5 */

type _SERVICE_STATUS = struct {
	dwServiceType             DWORD
	dwCurrentState            DWORD
	dwControlsAccepted        DWORD
	dwWin32ExitCode           DWORD
	dwServiceSpecificExitCode DWORD
	dwCheckPoint              DWORD
	dwWaitHint                DWORD
} /* winsvc.h:147:11 */

type SERVICE_STATUS = _SERVICE_STATUS /* winsvc.h:155:5 */
type LPSERVICE_STATUS = uintptr       /* winsvc.h:155:20 */

type _SERVICE_STATUS_PROCESS = struct {
	dwServiceType             DWORD
	dwCurrentState            DWORD
	dwControlsAccepted        DWORD
	dwWin32ExitCode           DWORD
	dwServiceSpecificExitCode DWORD
	dwCheckPoint              DWORD
	dwWaitHint                DWORD
	dwProcessId               DWORD
	dwServiceFlags            DWORD
} /* winsvc.h:157:11 */

type SERVICE_STATUS_PROCESS = _SERVICE_STATUS_PROCESS /* winsvc.h:167:5 */
type LPSERVICE_STATUS_PROCESS = uintptr               /* winsvc.h:167:28 */

type _ENUM_SERVICE_STATUSA = struct {
	lpServiceName LPSTR
	lpDisplayName LPSTR
	ServiceStatus SERVICE_STATUS
} /* winsvc.h:169:11 */

type ENUM_SERVICE_STATUSA = _ENUM_SERVICE_STATUSA /* winsvc.h:173:5 */
type LPENUM_SERVICE_STATUSA = uintptr             /* winsvc.h:173:26 */

type _ENUM_SERVICE_STATUSW = struct {
	lpServiceName LPWSTR
	lpDisplayName LPWSTR
	ServiceStatus SERVICE_STATUS
} /* winsvc.h:175:11 */

type ENUM_SERVICE_STATUSW = _ENUM_SERVICE_STATUSW /* winsvc.h:179:5 */
type LPENUM_SERVICE_STATUSW = uintptr             /* winsvc.h:179:26 */

type ENUM_SERVICE_STATUS = ENUM_SERVICE_STATUSW     /* winsvc.h:181:3 */
type LPENUM_SERVICE_STATUS = LPENUM_SERVICE_STATUSW /* winsvc.h:182:3 */

type _ENUM_SERVICE_STATUS_PROCESSA = struct {
	lpServiceName        LPSTR
	lpDisplayName        LPSTR
	ServiceStatusProcess SERVICE_STATUS_PROCESS
} /* winsvc.h:184:11 */

type ENUM_SERVICE_STATUS_PROCESSA = _ENUM_SERVICE_STATUS_PROCESSA /* winsvc.h:188:5 */
type LPENUM_SERVICE_STATUS_PROCESSA = uintptr                     /* winsvc.h:188:34 */

type _ENUM_SERVICE_STATUS_PROCESSW = struct {
	lpServiceName        LPWSTR
	lpDisplayName        LPWSTR
	ServiceStatusProcess SERVICE_STATUS_PROCESS
} /* winsvc.h:190:11 */

type ENUM_SERVICE_STATUS_PROCESSW = _ENUM_SERVICE_STATUS_PROCESSW /* winsvc.h:194:5 */
type LPENUM_SERVICE_STATUS_PROCESSW = uintptr                     /* winsvc.h:194:34 */

type ENUM_SERVICE_STATUS_PROCESS = ENUM_SERVICE_STATUS_PROCESSW     /* winsvc.h:196:3 */
type LPENUM_SERVICE_STATUS_PROCESS = LPENUM_SERVICE_STATUS_PROCESSW /* winsvc.h:197:3 */

type SC_LOCK = LPVOID /* winsvc.h:199:18 */

type _QUERY_SERVICE_LOCK_STATUSA = struct {
	fIsLocked      DWORD
	lpLockOwner    LPSTR
	dwLockDuration DWORD
} /* winsvc.h:201:11 */

type QUERY_SERVICE_LOCK_STATUSA = _QUERY_SERVICE_LOCK_STATUSA /* winsvc.h:205:5 */
type LPQUERY_SERVICE_LOCK_STATUSA = uintptr                   /* winsvc.h:205:32 */

type _QUERY_SERVICE_LOCK_STATUSW = struct {
	fIsLocked      DWORD
	lpLockOwner    LPWSTR
	dwLockDuration DWORD
} /* winsvc.h:207:11 */

type QUERY_SERVICE_LOCK_STATUSW = _QUERY_SERVICE_LOCK_STATUSW /* winsvc.h:211:5 */
type LPQUERY_SERVICE_LOCK_STATUSW = uintptr                   /* winsvc.h:211:32 */

type QUERY_SERVICE_LOCK_STATUS = QUERY_SERVICE_LOCK_STATUSW     /* winsvc.h:213:3 */
type LPQUERY_SERVICE_LOCK_STATUS = LPQUERY_SERVICE_LOCK_STATUSW /* winsvc.h:214:3 */

type _QUERY_SERVICE_CONFIGA = struct {
	dwServiceType      DWORD
	dwStartType        DWORD
	dwErrorControl     DWORD
	lpBinaryPathName   LPSTR
	lpLoadOrderGroup   LPSTR
	dwTagId            DWORD
	lpDependencies     LPSTR
	lpServiceStartName LPSTR
	lpDisplayName      LPSTR
} /* winsvc.h:216:11 */

type QUERY_SERVICE_CONFIGA = _QUERY_SERVICE_CONFIGA /* winsvc.h:226:5 */
type LPQUERY_SERVICE_CONFIGA = uintptr              /* winsvc.h:226:27 */

type _QUERY_SERVICE_CONFIGW = struct {
	dwServiceType      DWORD
	dwStartType        DWORD
	dwErrorControl     DWORD
	lpBinaryPathName   LPWSTR
	lpLoadOrderGroup   LPWSTR
	dwTagId            DWORD
	lpDependencies     LPWSTR
	lpServiceStartName LPWSTR
	lpDisplayName      LPWSTR
} /* winsvc.h:228:11 */

type QUERY_SERVICE_CONFIGW = _QUERY_SERVICE_CONFIGW /* winsvc.h:238:5 */
type LPQUERY_SERVICE_CONFIGW = uintptr              /* winsvc.h:238:27 */

type QUERY_SERVICE_CONFIG = QUERY_SERVICE_CONFIGW     /* winsvc.h:240:3 */
type LPQUERY_SERVICE_CONFIG = LPQUERY_SERVICE_CONFIGW /* winsvc.h:241:3 */

type LPSERVICE_MAIN_FUNCTIONW = uintptr /* winsvc.h:243:16 */
type LPSERVICE_MAIN_FUNCTIONA = uintptr /* winsvc.h:244:16 */

type _SERVICE_TABLE_ENTRYA = struct {
	lpServiceName LPSTR
	lpServiceProc LPSERVICE_MAIN_FUNCTIONA
} /* winsvc.h:248:11 */

type SERVICE_TABLE_ENTRYA = _SERVICE_TABLE_ENTRYA /* winsvc.h:251:5 */
type LPSERVICE_TABLE_ENTRYA = uintptr             /* winsvc.h:251:26 */

type _SERVICE_TABLE_ENTRYW = struct {
	lpServiceName LPWSTR
	lpServiceProc LPSERVICE_MAIN_FUNCTIONW
} /* winsvc.h:253:11 */

type SERVICE_TABLE_ENTRYW = _SERVICE_TABLE_ENTRYW /* winsvc.h:256:5 */
type LPSERVICE_TABLE_ENTRYW = uintptr             /* winsvc.h:256:26 */

type SERVICE_TABLE_ENTRY = SERVICE_TABLE_ENTRYW     /* winsvc.h:258:3 */
type LPSERVICE_TABLE_ENTRY = LPSERVICE_TABLE_ENTRYW /* winsvc.h:259:3 */

type LPHANDLER_FUNCTION = uintptr    /* winsvc.h:261:16 */
type LPHANDLER_FUNCTION_EX = uintptr /* winsvc.h:262:17 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _MODEMDEVCAPS = struct {
	dwActualSize              DWORD
	dwRequiredSize            DWORD
	dwDevSpecificOffset       DWORD
	dwDevSpecificSize         DWORD
	dwModemProviderVersion    DWORD
	dwModemManufacturerOffset DWORD
	dwModemManufacturerSize   DWORD
	dwModemModelOffset        DWORD
	dwModemModelSize          DWORD
	dwModemVersionOffset      DWORD
	dwModemVersionSize        DWORD
	dwDialOptions             DWORD
	dwCallSetupFailTimer      DWORD
	dwInactivityTimeout       DWORD
	dwSpeakerVolume           DWORD
	dwSpeakerMode             DWORD
	dwModemOptions            DWORD
	dwMaxDTERate              DWORD
	dwMaxDCERate              DWORD
	abVariablePortion         [1]BYTE
	_                         [3]byte
} /* mcx.h:9:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type MODEMDEVCAPS = _MODEMDEVCAPS /* mcx.h:30:3 */
type PMODEMDEVCAPS = uintptr      /* mcx.h:30:16 */
type LPMODEMDEVCAPS = uintptr     /* mcx.h:30:31 */

type _MODEMSETTINGS = struct {
	dwActualSize             DWORD
	dwRequiredSize           DWORD
	dwDevSpecificOffset      DWORD
	dwDevSpecificSize        DWORD
	dwCallSetupFailTimer     DWORD
	dwInactivityTimeout      DWORD
	dwSpeakerVolume          DWORD
	dwSpeakerMode            DWORD
	dwPreferredModemOptions  DWORD
	dwNegotiatedModemOptions DWORD
	dwNegotiatedDCERate      DWORD
	abVariablePortion        [1]BYTE
	_                        [3]byte
} /* mcx.h:32:9 */

type MODEMSETTINGS = _MODEMSETTINGS /* mcx.h:45:3 */
type PMODEMSETTINGS = uintptr       /* mcx.h:45:17 */
type LPMODEMSETTINGS = uintptr      /* mcx.h:45:33 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type HIMC__ = struct{ unused int32 } /* imm.h:18:3 */

type HIMC = uintptr                   /* imm.h:18:3 */
type HIMCC__ = struct{ unused int32 } /* imm.h:19:3 */

type HIMCC = uintptr /* imm.h:19:3 */

type LPHKL = uintptr  /* imm.h:21:15 */
type LPUINT = uintptr /* imm.h:24:16 */

type tagCOMPOSITIONFORM = struct {
	dwStyle      DWORD
	ptCurrentPos POINT
	rcArea       RECT
} /* imm.h:27:11 */

type COMPOSITIONFORM = tagCOMPOSITIONFORM /* imm.h:31:5 */
type PCOMPOSITIONFORM = uintptr           /* imm.h:31:21 */
type NPCOMPOSITIONFORM = uintptr          /* imm.h:31:39 */
type LPCOMPOSITIONFORM = uintptr          /* imm.h:31:58 */

type tagCANDIDATEFORM = struct {
	dwIndex      DWORD
	dwStyle      DWORD
	ptCurrentPos POINT
	rcArea       RECT
} /* imm.h:33:11 */

type CANDIDATEFORM = tagCANDIDATEFORM /* imm.h:38:5 */
type PCANDIDATEFORM = uintptr         /* imm.h:38:19 */
type NPCANDIDATEFORM = uintptr        /* imm.h:38:35 */
type LPCANDIDATEFORM = uintptr        /* imm.h:38:52 */

type tagCANDIDATELIST = struct {
	dwSize      DWORD
	dwStyle     DWORD
	dwCount     DWORD
	dwSelection DWORD
	dwPageStart DWORD
	dwPageSize  DWORD
	dwOffset    [1]DWORD
} /* imm.h:40:11 */

type CANDIDATELIST = tagCANDIDATELIST /* imm.h:48:5 */
type PCANDIDATELIST = uintptr         /* imm.h:48:19 */
type NPCANDIDATELIST = uintptr        /* imm.h:48:35 */
type LPCANDIDATELIST = uintptr        /* imm.h:48:52 */

type tagREGISTERWORDA = struct {
	lpReading LPSTR
	lpWord    LPSTR
} /* imm.h:50:11 */

type REGISTERWORDA = tagREGISTERWORDA /* imm.h:53:5 */
type PREGISTERWORDA = uintptr         /* imm.h:53:19 */
type NPREGISTERWORDA = uintptr        /* imm.h:53:35 */
type LPREGISTERWORDA = uintptr        /* imm.h:53:52 */

type tagREGISTERWORDW = struct {
	lpReading LPWSTR
	lpWord    LPWSTR
} /* imm.h:55:11 */

type REGISTERWORDW = tagREGISTERWORDW /* imm.h:58:5 */
type PREGISTERWORDW = uintptr         /* imm.h:58:19 */
type NPREGISTERWORDW = uintptr        /* imm.h:58:35 */
type LPREGISTERWORDW = uintptr        /* imm.h:58:52 */

type REGISTERWORD = REGISTERWORDW     /* imm.h:60:3 */
type PREGISTERWORD = PREGISTERWORDW   /* imm.h:61:3 */
type NPREGISTERWORD = NPREGISTERWORDW /* imm.h:62:3 */
type LPREGISTERWORD = LPREGISTERWORDW /* imm.h:63:3 */

type tagRECONVERTSTRING = struct {
	dwSize            DWORD
	dwVersion         DWORD
	dwStrLen          DWORD
	dwStrOffset       DWORD
	dwCompStrLen      DWORD
	dwCompStrOffset   DWORD
	dwTargetStrLen    DWORD
	dwTargetStrOffset DWORD
} /* imm.h:65:11 */

type RECONVERTSTRING = tagRECONVERTSTRING /* imm.h:74:5 */
type PRECONVERTSTRING = uintptr           /* imm.h:74:21 */
type NPRECONVERTSTRING = uintptr          /* imm.h:74:39 */
type LPRECONVERTSTRING = uintptr          /* imm.h:74:58 */

type tagSTYLEBUFA = struct {
	dwStyle       DWORD
	szDescription [32]CHAR
} /* imm.h:78:11 */

type STYLEBUFA = tagSTYLEBUFA /* imm.h:81:5 */
type PSTYLEBUFA = uintptr     /* imm.h:81:15 */
type NPSTYLEBUFA = uintptr    /* imm.h:81:27 */
type LPSTYLEBUFA = uintptr    /* imm.h:81:40 */

type tagSTYLEBUFW = struct {
	dwStyle       DWORD
	szDescription [32]WCHAR
} /* imm.h:83:11 */

type STYLEBUFW = tagSTYLEBUFW /* imm.h:86:5 */
type PSTYLEBUFW = uintptr     /* imm.h:86:15 */
type NPSTYLEBUFW = uintptr    /* imm.h:86:27 */
type LPSTYLEBUFW = uintptr    /* imm.h:86:40 */

type STYLEBUF = STYLEBUFW     /* imm.h:88:3 */
type PSTYLEBUF = PSTYLEBUFW   /* imm.h:89:3 */
type NPSTYLEBUF = NPSTYLEBUFW /* imm.h:90:3 */
type LPSTYLEBUF = LPSTYLEBUFW /* imm.h:91:3 */

type tagIMEMENUITEMINFOA = struct {
	cbSize        UINT
	fType         UINT
	fState        UINT
	wID           UINT
	hbmpChecked   HBITMAP
	hbmpUnchecked HBITMAP
	dwItemData    DWORD
	szString      [80]CHAR
	hbmpItem      HBITMAP
} /* imm.h:95:11 */

type IMEMENUITEMINFOA = tagIMEMENUITEMINFOA /* imm.h:105:5 */
type PIMEMENUITEMINFOA = uintptr            /* imm.h:105:22 */
type NPIMEMENUITEMINFOA = uintptr           /* imm.h:105:41 */
type LPIMEMENUITEMINFOA = uintptr           /* imm.h:105:61 */

type tagIMEMENUITEMINFOW = struct {
	cbSize        UINT
	fType         UINT
	fState        UINT
	wID           UINT
	hbmpChecked   HBITMAP
	hbmpUnchecked HBITMAP
	dwItemData    DWORD
	szString      [80]WCHAR
	hbmpItem      HBITMAP
} /* imm.h:107:11 */

type IMEMENUITEMINFOW = tagIMEMENUITEMINFOW /* imm.h:117:5 */
type PIMEMENUITEMINFOW = uintptr            /* imm.h:117:22 */
type NPIMEMENUITEMINFOW = uintptr           /* imm.h:117:41 */
type LPIMEMENUITEMINFOW = uintptr           /* imm.h:117:61 */

type IMEMENUITEMINFO = IMEMENUITEMINFOW     /* imm.h:119:3 */
type PIMEMENUITEMINFO = PIMEMENUITEMINFOW   /* imm.h:120:3 */
type NPIMEMENUITEMINFO = NPIMEMENUITEMINFOW /* imm.h:121:3 */
type LPIMEMENUITEMINFO = LPIMEMENUITEMINFOW /* imm.h:122:3 */

type tagIMECHARPOSITION = struct {
	dwSize      DWORD
	dwCharPos   DWORD
	pt          POINT
	cLineHeight UINT
	rcDocument  RECT
} /* imm.h:124:11 */

type IMECHARPOSITION = tagIMECHARPOSITION /* imm.h:130:5 */
type PIMECHARPOSITION = uintptr           /* imm.h:130:21 */
type NPIMECHARPOSITION = uintptr          /* imm.h:130:39 */
type LPIMECHARPOSITION = uintptr          /* imm.h:130:58 */

type IMCENUMPROC = uintptr /* imm.h:132:19 */

type REGISTERWORDENUMPROCA = uintptr /* imm.h:185:15 */
type REGISTERWORDENUMPROCW = uintptr /* imm.h:186:15 */

// Restore old value of interface for Obj-C.  See above.

// Compatibility to older visual studio / windows platform SDK

// Ask for the winsock function typedefs, also.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// undefine macros from winsock.h
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type timeval = struct {
	tv_sec  int32
	tv_usec int32
} /* _timeval.h:10:1 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure __LONG32 is defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type u_char = uint8   /* _bsd_types.h:13:23 */
type u_short = uint16 /* _bsd_types.h:14:24 */
type u_int = uint32   /* _bsd_types.h:15:22 */
type u_long = uint32  /* _bsd_types.h:18:23 */

type u_int64 = uint64 /* _bsd_types.h:25:28 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type in_addr = struct {
	S_un struct {
		_      [0]uint32
		S_un_b struct {
			s_b1 u_char
			s_b2 u_char
			s_b3 u_char
			s_b4 u_char
		}
	}
} /* inaddr.h:17:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IN_ADDR = in_addr   /* inaddr.h:23:3 */
type PIN_ADDR = uintptr  /* inaddr.h:23:12 */
type LPIN_ADDR = uintptr /* inaddr.h:23:23 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type SOCKET = UINT_PTR /* _socket_types.h:11:18 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// fd_set may have been defined by the newlib <sys/types.h>
// if  __USE_W32_SOCKETS not defined.

type fd_set1 = struct {
	fd_count u_int
	fd_array [64]SOCKET
} /* _fd_types.h:21:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// fd_set may have been defined by the newlib <sys/types.h>
// if  __USE_W32_SOCKETS not defined.

type fd_set = fd_set1 /* _fd_types.h:25:3 */

// FD_SET is differently implement in winsock.h and winsock2.h.  If we
//    encounter that we are going to redefine it, and if the original definition
//    is from winsock.h, make sure to undef FD_SET so it can be redefined to
//    the winsock2.h version.

type FD_SET = fd_set1   /* _fd_types.h:104:23 */
type PFD_SET = uintptr  /* _fd_types.h:105:23 */
type LPFD_SET = uintptr /* _fd_types.h:106:23 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type hostent = struct {
	h_name      uintptr
	h_aliases   uintptr
	h_addrtype  int16
	h_length    int16
	h_addr_list uintptr
} /* _ip_types.h:25:1 */

type netent = struct {
	n_name     uintptr
	n_aliases  uintptr
	n_addrtype int16
	_          [2]byte
	n_net      u_long
} /* _ip_types.h:33:1 */

type servent = struct {
	s_name    uintptr
	s_aliases uintptr
	s_port    int16
	_         [2]byte
	s_proto   uintptr
} /* _ip_types.h:40:1 */

type protoent = struct {
	p_name    uintptr
	p_aliases uintptr
	p_proto   int16
	_         [2]byte
} /* _ip_types.h:52:1 */

type sockproto = struct {
	sp_family   u_short
	sp_protocol u_short
} /* _ip_types.h:58:1 */

type linger = struct {
	l_onoff  u_short
	l_linger u_short
} /* _ip_types.h:63:1 */

type sockaddr = struct {
	sa_family u_short
	sa_data   [14]int8
} /* _ip_types.h:70:1 */

type sockaddr_in = struct {
	sin_family int16
	sin_port   u_short
	sin_addr   struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	sin_zero [8]int8
} /* _ip_types.h:75:1 */

type HOSTENT = hostent   /* _ip_types.h:82:25 */
type PHOSTENT = uintptr  /* _ip_types.h:83:25 */
type LPHOSTENT = uintptr /* _ip_types.h:84:25 */

type SERVENT = servent   /* _ip_types.h:86:25 */
type PSERVENT = uintptr  /* _ip_types.h:87:25 */
type LPSERVENT = uintptr /* _ip_types.h:88:25 */

type PROTOENT = protoent  /* _ip_types.h:90:26 */
type PPROTOENT = uintptr  /* _ip_types.h:91:26 */
type LPPROTOENT = uintptr /* _ip_types.h:92:26 */

type SOCKADDR = sockaddr  /* _ip_types.h:94:26 */
type PSOCKADDR = uintptr  /* _ip_types.h:95:26 */
type LPSOCKADDR = uintptr /* _ip_types.h:96:26 */

type SOCKADDR_IN = sockaddr_in /* _ip_types.h:98:28 */
type PSOCKADDR_IN = uintptr    /* _ip_types.h:99:28 */
type LPSOCKADDR_IN = uintptr   /* _ip_types.h:100:28 */

type LINGER = linger    /* _ip_types.h:102:24 */
type PLINGER = uintptr  /* _ip_types.h:103:24 */
type LPLINGER = uintptr /* _ip_types.h:104:24 */

type TIMEVAL = timeval   /* _ip_types.h:115:25 */
type PTIMEVAL = uintptr  /* _ip_types.h:116:25 */
type LPTIMEVAL = uintptr /* _ip_types.h:117:25 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type WSAData = struct {
	wVersion       WORD
	wHighVersion   WORD
	szDescription  [257]int8
	szSystemStatus [129]int8
	iMaxSockets    uint16
	iMaxUdpDg      uint16
	_              [2]byte
	lpVendorInfo   uintptr
} /* _wsadata.h:13:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type WSADATA = WSAData   /* _wsadata.h:29:3 */
type LPWSADATA = uintptr /* _wsadata.h:29:12 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// FIXME FIXME FIXME FIXME FIXME: Much more data need moving here.
// This holds only SCOPE_LEVEL and SCOPE_ID so that compilations
// do not fail.

type SCOPE_LEVEL = uint32 /* ws2def.h:26:3 */

type _SCOPE_ID = struct {
	__0 struct {
		__0 struct {
			_    [0]uint32
			Zone uint32 /* ULONG Zone: 28, ULONG Level: 4 */
		}
	}
} /* ws2def.h:28:9 */

type SCOPE_ID = _SCOPE_ID /* ws2def.h:36:3 */
type PSCOPE_ID = uintptr  /* ws2def.h:36:13 */

type sockaddr_storage = struct {
	ss_family  int16
	__ss_pad1  [6]int8
	__ss_align int64
	__ss_pad2  [112]int8
} /* winsock2.h:260:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type LPWSAOVERLAPPED = uintptr /* winsock2.h:353:30 */

type _WSABUF = struct {
	len u_long
	buf uintptr
} /* winsock2.h:370:11 */

type WSABUF = _WSABUF   /* winsock2.h:373:5 */
type LPWSABUF = uintptr /* winsock2.h:373:12 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type SERVICETYPE = ULONG /* qos.h:9:15 */

type _flowspec = struct {
	TokenRate          ULONG
	TokenBucketSize    ULONG
	PeakBandwidth      ULONG
	Latency            ULONG
	DelayVariation     ULONG
	ServiceType        SERVICETYPE
	MaxSduSize         ULONG
	MinimumPolicedSize ULONG
} /* qos.h:32:11 */

type FLOWSPEC = _flowspec /* qos.h:41:5 */
type PFLOWSPEC = uintptr  /* qos.h:41:14 */
type LPFLOWSPEC = uintptr /* qos.h:41:25 */

type _QOS_OBJECT_HDR = struct {
	ObjectType   ULONG
	ObjectLength ULONG
} /* qos.h:46:11 */

type QOS_OBJECT_HDR = _QOS_OBJECT_HDR /* qos.h:49:5 */
type LPQOS_OBJECT_HDR = uintptr       /* qos.h:49:21 */

type _QOS_SD_MODE = struct {
	ObjectHdr        QOS_OBJECT_HDR
	ShapeDiscardMode ULONG
} /* qos.h:57:11 */

type QOS_SD_MODE = _QOS_SD_MODE /* qos.h:60:5 */
type LPQOS_SD_MODE = uintptr    /* qos.h:60:18 */

type _QOS_SHAPING_RATE = struct {
	ObjectHdr   QOS_OBJECT_HDR
	ShapingRate ULONG
} /* qos.h:67:11 */

type QOS_SHAPING_RATE = _QOS_SHAPING_RATE /* qos.h:70:5 */
type LPQOS_SHAPING_RATE = uintptr         /* qos.h:70:23 */

type _QualityOfService = struct {
	SendingFlowspec   FLOWSPEC
	ReceivingFlowspec FLOWSPEC
	ProviderSpecific  WSABUF
} /* winsock2.h:377:11 */

type QOS = _QualityOfService /* winsock2.h:381:5 */
type LPQOS = uintptr         /* winsock2.h:381:9 */

type GROUP = uint32 /* winsock2.h:391:22 */

type _WSANETWORKEVENTS = struct {
	lNetworkEvents int32
	iErrorCode     [10]int32
} /* winsock2.h:396:11 */

type WSANETWORKEVENTS = _WSANETWORKEVENTS /* winsock2.h:399:5 */
type LPWSANETWORKEVENTS = uintptr         /* winsock2.h:399:22 */

type _WSAPROTOCOLCHAIN = struct {
	ChainLen     int32
	ChainEntries [7]DWORD
} /* winsock2.h:410:11 */

type WSAPROTOCOLCHAIN = _WSAPROTOCOLCHAIN /* winsock2.h:414:5 */
type LPWSAPROTOCOLCHAIN = uintptr         /* winsock2.h:414:22 */

type _WSAPROTOCOL_INFOA = struct {
	dwServiceFlags1    DWORD
	dwServiceFlags2    DWORD
	dwServiceFlags3    DWORD
	dwServiceFlags4    DWORD
	dwProviderFlags    DWORD
	ProviderId         GUID
	dwCatalogEntryId   DWORD
	ProtocolChain      WSAPROTOCOLCHAIN
	iVersion           int32
	iAddressFamily     int32
	iMaxSockAddr       int32
	iMinSockAddr       int32
	iSocketType        int32
	iProtocol          int32
	iProtocolMaxOffset int32
	iNetworkByteOrder  int32
	iSecurityScheme    int32
	dwMessageSize      DWORD
	dwProviderReserved DWORD
	szProtocol         [256]CHAR
} /* winsock2.h:418:11 */

type WSAPROTOCOL_INFOA = _WSAPROTOCOL_INFOA /* winsock2.h:439:5 */
type LPWSAPROTOCOL_INFOA = uintptr          /* winsock2.h:439:23 */

type _WSAPROTOCOL_INFOW = struct {
	dwServiceFlags1    DWORD
	dwServiceFlags2    DWORD
	dwServiceFlags3    DWORD
	dwServiceFlags4    DWORD
	dwProviderFlags    DWORD
	ProviderId         GUID
	dwCatalogEntryId   DWORD
	ProtocolChain      WSAPROTOCOLCHAIN
	iVersion           int32
	iAddressFamily     int32
	iMaxSockAddr       int32
	iMinSockAddr       int32
	iSocketType        int32
	iProtocol          int32
	iProtocolMaxOffset int32
	iNetworkByteOrder  int32
	iSecurityScheme    int32
	dwMessageSize      DWORD
	dwProviderReserved DWORD
	szProtocol         [256]WCHAR
} /* winsock2.h:441:11 */

type WSAPROTOCOL_INFOW = _WSAPROTOCOL_INFOW /* winsock2.h:462:5 */
type LPWSAPROTOCOL_INFOW = uintptr          /* winsock2.h:462:23 */

type WSAPROTOCOL_INFO = WSAPROTOCOL_INFOW     /* winsock2.h:464:3 */
type LPWSAPROTOCOL_INFO = LPWSAPROTOCOL_INFOW /* winsock2.h:465:3 */

type LPCONDITIONPROC = uintptr                    /* winsock2.h:541:15 */
type LPWSAOVERLAPPED_COMPLETION_ROUTINE = uintptr /* winsock2.h:542:16 */

type WSACOMPLETIONTYPE = uint32    /* winsock2.h:552:5 */
type PWSACOMPLETIONTYPE = uintptr  /* winsock2.h:552:23 */
type LPWSACOMPLETIONTYPE = uintptr /* winsock2.h:552:43 */

type _WSACOMPLETION = struct {
	Type       WSACOMPLETIONTYPE
	Parameters struct {
		WindowMessage struct {
			hWnd    HWND
			uMsg    UINT
			context WPARAM
		}
	}
} /* winsock2.h:554:11 */

type WSACOMPLETION = _WSACOMPLETION /* winsock2.h:575:5 */
type PWSACOMPLETION = uintptr       /* winsock2.h:575:19 */
type LPWSACOMPLETION = uintptr      /* winsock2.h:575:35 */

type SOCKADDR_STORAGE = sockaddr_storage /* winsock2.h:580:35 */
type PSOCKADDR_STORAGE = uintptr         /* winsock2.h:581:35 */
type LPSOCKADDR_STORAGE = uintptr        /* winsock2.h:582:35 */
type ADDRESS_FAMILY = u_short            /* winsock2.h:583:19 */

type _BLOB = struct {
	cbSize    ULONG
	pBlobData uintptr
} /* winsock2.h:589:11 */

type BLOB = _BLOB     /* winsock2.h:592:5 */
type LPBLOB = uintptr /* winsock2.h:592:10 */

type _SOCKET_ADDRESS = struct {
	lpSockaddr      LPSOCKADDR
	iSockaddrLength INT
} /* winsock2.h:663:11 */

type SOCKET_ADDRESS = _SOCKET_ADDRESS /* winsock2.h:666:5 */
type PSOCKET_ADDRESS = uintptr        /* winsock2.h:666:20 */
type LPSOCKET_ADDRESS = uintptr       /* winsock2.h:666:37 */

type _CSADDR_INFO = struct {
	LocalAddr   SOCKET_ADDRESS
	RemoteAddr  SOCKET_ADDRESS
	iSocketType INT
	iProtocol   INT
} /* winsock2.h:668:11 */

type CSADDR_INFO = _CSADDR_INFO /* winsock2.h:673:5 */
type PCSADDR_INFO = uintptr     /* winsock2.h:673:17 */
type LPCSADDR_INFO = uintptr    /* winsock2.h:673:31 */

type _SOCKET_ADDRESS_LIST = struct {
	iAddressCount INT
	Address       [1]SOCKET_ADDRESS
} /* winsock2.h:676:11 */

type SOCKET_ADDRESS_LIST = _SOCKET_ADDRESS_LIST /* winsock2.h:679:5 */
type PSOCKET_ADDRESS_LIST = uintptr             /* winsock2.h:679:25 */
type LPSOCKET_ADDRESS_LIST = uintptr            /* winsock2.h:679:47 */

type _AFPROTOCOLS = struct {
	iAddressFamily INT
	iProtocol      INT
} /* winsock2.h:681:11 */

type AFPROTOCOLS = _AFPROTOCOLS /* winsock2.h:684:5 */
type PAFPROTOCOLS = uintptr     /* winsock2.h:684:17 */
type LPAFPROTOCOLS = uintptr    /* winsock2.h:684:31 */

type WSAECOMPARATOR = uint32    /* winsock2.h:689:5 */
type PWSAECOMPARATOR = uintptr  /* winsock2.h:689:20 */
type LPWSAECOMPARATOR = uintptr /* winsock2.h:689:37 */

type _WSAVersion = struct {
	dwVersion DWORD
	ecHow     WSAECOMPARATOR
} /* winsock2.h:691:11 */

type WSAVERSION = _WSAVersion /* winsock2.h:694:5 */
type PWSAVERSION = uintptr    /* winsock2.h:694:16 */
type LPWSAVERSION = uintptr   /* winsock2.h:694:29 */

type _WSAQuerySetA = struct {
	dwSize                  DWORD
	lpszServiceInstanceName LPSTR
	lpServiceClassId        LPGUID
	lpVersion               LPWSAVERSION
	lpszComment             LPSTR
	dwNameSpace             DWORD
	lpNSProviderId          LPGUID
	lpszContext             LPSTR
	dwNumberOfProtocols     DWORD
	lpafpProtocols          LPAFPROTOCOLS
	lpszQueryString         LPSTR
	dwNumberOfCsAddrs       DWORD
	lpcsaBuffer             LPCSADDR_INFO
	dwOutputFlags           DWORD
	lpBlob                  LPBLOB
} /* winsock2.h:696:11 */

type WSAQUERYSETA = _WSAQuerySetA /* winsock2.h:712:5 */
type PWSAQUERYSETA = uintptr      /* winsock2.h:712:18 */
type LPWSAQUERYSETA = uintptr     /* winsock2.h:712:33 */

type _WSAQuerySetW = struct {
	dwSize                  DWORD
	lpszServiceInstanceName LPWSTR
	lpServiceClassId        LPGUID
	lpVersion               LPWSAVERSION
	lpszComment             LPWSTR
	dwNameSpace             DWORD
	lpNSProviderId          LPGUID
	lpszContext             LPWSTR
	dwNumberOfProtocols     DWORD
	lpafpProtocols          LPAFPROTOCOLS
	lpszQueryString         LPWSTR
	dwNumberOfCsAddrs       DWORD
	lpcsaBuffer             LPCSADDR_INFO
	dwOutputFlags           DWORD
	lpBlob                  LPBLOB
} /* winsock2.h:714:11 */

type WSAQUERYSETW = _WSAQuerySetW /* winsock2.h:730:5 */
type PWSAQUERYSETW = uintptr      /* winsock2.h:730:18 */
type LPWSAQUERYSETW = uintptr     /* winsock2.h:730:33 */

type WSAQUERYSET = WSAQUERYSETW     /* winsock2.h:732:3 */
type PWSAQUERYSET = PWSAQUERYSETW   /* winsock2.h:733:3 */
type LPWSAQUERYSET = LPWSAQUERYSETW /* winsock2.h:734:3 */

type WSAESETSERVICEOP = uint32    /* winsock2.h:773:5 */
type PWSAESETSERVICEOP = uintptr  /* winsock2.h:773:22 */
type LPWSAESETSERVICEOP = uintptr /* winsock2.h:773:41 */

type _WSANSClassInfoA = struct {
	lpszName    LPSTR
	dwNameSpace DWORD
	dwValueType DWORD
	dwValueSize DWORD
	lpValue     LPVOID
} /* winsock2.h:775:11 */

type WSANSCLASSINFOA = _WSANSClassInfoA /* winsock2.h:781:5 */
type PWSANSCLASSINFOA = uintptr         /* winsock2.h:781:21 */
type LPWSANSCLASSINFOA = uintptr        /* winsock2.h:781:39 */

type _WSANSClassInfoW = struct {
	lpszName    LPWSTR
	dwNameSpace DWORD
	dwValueType DWORD
	dwValueSize DWORD
	lpValue     LPVOID
} /* winsock2.h:783:11 */

type WSANSCLASSINFOW = _WSANSClassInfoW /* winsock2.h:789:5 */
type PWSANSCLASSINFOW = uintptr         /* winsock2.h:789:21 */
type LPWSANSCLASSINFOW = uintptr        /* winsock2.h:789:39 */

type WSANSCLASSINFO = WSANSCLASSINFOW     /* winsock2.h:791:3 */
type PWSANSCLASSINFO = PWSANSCLASSINFOW   /* winsock2.h:792:3 */
type LPWSANSCLASSINFO = LPWSANSCLASSINFOW /* winsock2.h:793:3 */

type _WSAServiceClassInfoA = struct {
	lpServiceClassId     LPGUID
	lpszServiceClassName LPSTR
	dwCount              DWORD
	lpClassInfos         LPWSANSCLASSINFOA
} /* winsock2.h:795:11 */

type WSASERVICECLASSINFOA = _WSAServiceClassInfoA /* winsock2.h:800:5 */
type PWSASERVICECLASSINFOA = uintptr              /* winsock2.h:800:26 */
type LPWSASERVICECLASSINFOA = uintptr             /* winsock2.h:800:49 */

type _WSAServiceClassInfoW = struct {
	lpServiceClassId     LPGUID
	lpszServiceClassName LPWSTR
	dwCount              DWORD
	lpClassInfos         LPWSANSCLASSINFOW
} /* winsock2.h:802:11 */

type WSASERVICECLASSINFOW = _WSAServiceClassInfoW /* winsock2.h:807:5 */
type PWSASERVICECLASSINFOW = uintptr              /* winsock2.h:807:26 */
type LPWSASERVICECLASSINFOW = uintptr             /* winsock2.h:807:49 */

type WSASERVICECLASSINFO = WSASERVICECLASSINFOW     /* winsock2.h:809:3 */
type PWSASERVICECLASSINFO = PWSASERVICECLASSINFOW   /* winsock2.h:810:3 */
type LPWSASERVICECLASSINFO = LPWSASERVICECLASSINFOW /* winsock2.h:811:3 */

type _WSANAMESPACE_INFOA = struct {
	NSProviderId   GUID
	dwNameSpace    DWORD
	fActive        WINBOOL
	dwVersion      DWORD
	lpszIdentifier LPSTR
} /* winsock2.h:813:11 */

type WSANAMESPACE_INFOA = _WSANAMESPACE_INFOA /* winsock2.h:819:5 */
type PWSANAMESPACE_INFOA = uintptr            /* winsock2.h:819:24 */
type LPWSANAMESPACE_INFOA = uintptr           /* winsock2.h:819:45 */

type _WSANAMESPACE_INFOW = struct {
	NSProviderId   GUID
	dwNameSpace    DWORD
	fActive        WINBOOL
	dwVersion      DWORD
	lpszIdentifier LPWSTR
} /* winsock2.h:821:11 */

type WSANAMESPACE_INFOW = _WSANAMESPACE_INFOW /* winsock2.h:827:5 */
type PWSANAMESPACE_INFOW = uintptr            /* winsock2.h:827:24 */
type LPWSANAMESPACE_INFOW = uintptr           /* winsock2.h:827:45 */

type WSANAMESPACE_INFO = WSANAMESPACE_INFOW     /* winsock2.h:829:3 */
type PWSANAMESPACE_INFO = PWSANAMESPACE_INFOW   /* winsock2.h:830:3 */
type LPWSANAMESPACE_INFO = LPWSANAMESPACE_INFOW /* winsock2.h:831:3 */

// FIXME: WSAMSG originally lived in mswsock.h,
// newer SDKs moved it into a new ws2def.h. for
// now we keep it here.
type _WSAMSG = struct {
	name          LPSOCKADDR
	namelen       INT
	lpBuffers     LPWSABUF
	dwBufferCount DWORD
	Control       WSABUF
	dwFlags       DWORD
} /* winsock2.h:836:11 */

// FIXME: WSAMSG originally lived in mswsock.h,
// newer SDKs moved it into a new ws2def.h. for
// now we keep it here.
type WSAMSG = _WSAMSG   /* winsock2.h:843:5 */
type PWSAMSG = uintptr  /* winsock2.h:843:12 */
type LPWSAMSG = uintptr /* winsock2.h:843:21 */

type LPFN_ACCEPT = uintptr                           /* winsock2.h:859:18 */
type LPFN_BIND = uintptr                             /* winsock2.h:860:15 */
type LPFN_CLOSESOCKET = uintptr                      /* winsock2.h:861:15 */
type LPFN_CONNECT = uintptr                          /* winsock2.h:862:15 */
type LPFN_IOCTLSOCKET = uintptr                      /* winsock2.h:863:15 */
type LPFN_GETPEERNAME = uintptr                      /* winsock2.h:864:15 */
type LPFN_GETSOCKNAME = uintptr                      /* winsock2.h:865:15 */
type LPFN_GETSOCKOPT = uintptr                       /* winsock2.h:866:15 */
type LPFN_HTONL = uintptr                            /* winsock2.h:867:18 */
type LPFN_HTONS = uintptr                            /* winsock2.h:868:19 */
type LPFN_INET_ADDR = uintptr                        /* winsock2.h:869:29 */
type LPFN_INET_NTOA = uintptr                        /* winsock2.h:870:16 */
type LPFN_LISTEN = uintptr                           /* winsock2.h:871:15 */
type LPFN_NTOHL = uintptr                            /* winsock2.h:872:18 */
type LPFN_NTOHS = uintptr                            /* winsock2.h:873:19 */
type LPFN_RECV = uintptr                             /* winsock2.h:874:15 */
type LPFN_RECVFROM = uintptr                         /* winsock2.h:875:15 */
type LPFN_SELECT = uintptr                           /* winsock2.h:876:15 */
type LPFN_SEND = uintptr                             /* winsock2.h:877:15 */
type LPFN_SENDTO = uintptr                           /* winsock2.h:878:15 */
type LPFN_SETSOCKOPT = uintptr                       /* winsock2.h:879:15 */
type LPFN_SHUTDOWN = uintptr                         /* winsock2.h:880:15 */
type LPFN_SOCKET = uintptr                           /* winsock2.h:881:18 */
type LPFN_GETHOSTBYADDR = uintptr                    /* winsock2.h:882:26 */
type LPFN_GETHOSTBYNAME = uintptr                    /* winsock2.h:883:26 */
type LPFN_GETHOSTNAME = uintptr                      /* winsock2.h:884:15 */
type LPFN_GETSERVBYPORT = uintptr                    /* winsock2.h:885:26 */
type LPFN_GETSERVBYNAME = uintptr                    /* winsock2.h:886:26 */
type LPFN_GETPROTOBYNUMBER = uintptr                 /* winsock2.h:887:27 */
type LPFN_GETPROTOBYNAME = uintptr                   /* winsock2.h:888:27 */
type LPFN_WSASTARTUP = uintptr                       /* winsock2.h:889:15 */
type LPFN_WSACLEANUP = uintptr                       /* winsock2.h:890:15 */
type LPFN_WSASETLASTERROR = uintptr                  /* winsock2.h:891:16 */
type LPFN_WSAGETLASTERROR = uintptr                  /* winsock2.h:892:15 */
type LPFN_WSAISBLOCKING = uintptr                    /* winsock2.h:893:19 */
type LPFN_WSAUNHOOKBLOCKINGHOOK = uintptr            /* winsock2.h:894:15 */
type LPFN_WSASETBLOCKINGHOOK = uintptr               /* winsock2.h:895:19 */
type LPFN_WSACANCELBLOCKINGCALL = uintptr            /* winsock2.h:896:15 */
type LPFN_WSAASYNCGETSERVBYNAME = uintptr            /* winsock2.h:897:18 */
type LPFN_WSAASYNCGETSERVBYPORT = uintptr            /* winsock2.h:898:18 */
type LPFN_WSAASYNCGETPROTOBYNAME = uintptr           /* winsock2.h:899:18 */
type LPFN_WSAASYNCGETPROTOBYNUMBER = uintptr         /* winsock2.h:900:18 */
type LPFN_WSAASYNCGETHOSTBYNAME = uintptr            /* winsock2.h:901:18 */
type LPFN_WSAASYNCGETHOSTBYADDR = uintptr            /* winsock2.h:902:18 */
type LPFN_WSACANCELASYNCREQUEST = uintptr            /* winsock2.h:903:15 */
type LPFN_WSAASYNCSELECT = uintptr                   /* winsock2.h:904:15 */
type LPFN_WSAACCEPT = uintptr                        /* winsock2.h:905:18 */
type LPFN_WSACLOSEEVENT = uintptr                    /* winsock2.h:906:19 */
type LPFN_WSACONNECT = uintptr                       /* winsock2.h:907:15 */
type LPFN_WSACREATEEVENT = uintptr                   /* winsock2.h:908:20 */
type LPFN_WSADUPLICATESOCKETA = uintptr              /* winsock2.h:909:15 */
type LPFN_WSADUPLICATESOCKETW = uintptr              /* winsock2.h:910:15 */
type LPFN_WSAENUMNETWORKEVENTS = uintptr             /* winsock2.h:911:15 */
type LPFN_WSAENUMPROTOCOLSA = uintptr                /* winsock2.h:912:15 */
type LPFN_WSAENUMPROTOCOLSW = uintptr                /* winsock2.h:913:15 */
type LPFN_WSAEVENTSELECT = uintptr                   /* winsock2.h:914:15 */
type LPFN_WSAGETOVERLAPPEDRESULT = uintptr           /* winsock2.h:915:19 */
type LPFN_WSAGETQOSBYNAME = uintptr                  /* winsock2.h:916:19 */
type LPFN_WSAHTONL = uintptr                         /* winsock2.h:917:15 */
type LPFN_WSAHTONS = uintptr                         /* winsock2.h:918:15 */
type LPFN_WSAIOCTL = uintptr                         /* winsock2.h:919:15 */
type LPFN_WSAJOINLEAF = uintptr                      /* winsock2.h:920:18 */
type LPFN_WSANTOHL = uintptr                         /* winsock2.h:921:15 */
type LPFN_WSANTOHS = uintptr                         /* winsock2.h:922:15 */
type LPFN_WSARECV = uintptr                          /* winsock2.h:923:15 */
type LPFN_WSARECVDISCONNECT = uintptr                /* winsock2.h:924:15 */
type LPFN_WSARECVFROM = uintptr                      /* winsock2.h:925:15 */
type LPFN_WSARESETEVENT = uintptr                    /* winsock2.h:926:19 */
type LPFN_WSASEND = uintptr                          /* winsock2.h:927:15 */
type LPFN_WSASENDDISCONNECT = uintptr                /* winsock2.h:928:15 */
type LPFN_WSASENDTO = uintptr                        /* winsock2.h:929:15 */
type LPFN_WSASETEVENT = uintptr                      /* winsock2.h:930:19 */
type LPFN_WSASOCKETA = uintptr                       /* winsock2.h:931:18 */
type LPFN_WSASOCKETW = uintptr                       /* winsock2.h:932:18 */
type LPFN_WSAWAITFORMULTIPLEEVENTS = uintptr         /* winsock2.h:933:17 */
type LPFN_WSAADDRESSTOSTRINGA = uintptr              /* winsock2.h:934:15 */
type LPFN_WSAADDRESSTOSTRINGW = uintptr              /* winsock2.h:935:15 */
type LPFN_WSASTRINGTOADDRESSA = uintptr              /* winsock2.h:936:15 */
type LPFN_WSASTRINGTOADDRESSW = uintptr              /* winsock2.h:937:15 */
type LPFN_WSALOOKUPSERVICEBEGINA = uintptr           /* winsock2.h:938:15 */
type LPFN_WSALOOKUPSERVICEBEGINW = uintptr           /* winsock2.h:939:15 */
type LPFN_WSALOOKUPSERVICENEXTA = uintptr            /* winsock2.h:940:15 */
type LPFN_WSALOOKUPSERVICENEXTW = uintptr            /* winsock2.h:941:15 */
type LPFN_WSANSPIOCTL = uintptr                      /* winsock2.h:942:15 */
type LPFN_WSALOOKUPSERVICEEND = uintptr              /* winsock2.h:943:15 */
type LPFN_WSAINSTALLSERVICECLASSA = uintptr          /* winsock2.h:944:15 */
type LPFN_WSAINSTALLSERVICECLASSW = uintptr          /* winsock2.h:945:15 */
type LPFN_WSAREMOVESERVICECLASS = uintptr            /* winsock2.h:946:15 */
type LPFN_WSAGETSERVICECLASSINFOA = uintptr          /* winsock2.h:947:15 */
type LPFN_WSAGETSERVICECLASSINFOW = uintptr          /* winsock2.h:948:15 */
type LPFN_WSAENUMNAMESPACEPROVIDERSA = uintptr       /* winsock2.h:949:15 */
type LPFN_WSAENUMNAMESPACEPROVIDERSW = uintptr       /* winsock2.h:950:15 */
type LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDA = uintptr /* winsock2.h:951:15 */
type LPFN_WSAGETSERVICECLASSNAMEBYCLASSIDW = uintptr /* winsock2.h:952:15 */
type LPFN_WSASETSERVICEA = uintptr                   /* winsock2.h:953:15 */
type LPFN_WSASETSERVICEW = uintptr                   /* winsock2.h:954:15 */
type LPFN_WSAPROVIDERCONFIGCHANGE = uintptr          /* winsock2.h:955:15 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type in6_addr = struct {
	u struct {
		_    [0]uint16
		Byte [16]u_char
	}
} /* in6addr.h:17:9 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type IN6_ADDR = in6_addr  /* in6addr.h:25:3 */
type PIN6_ADDR = uintptr  /* in6addr.h:25:13 */
type LPIN6_ADDR = uintptr /* in6addr.h:25:25 */

type ipv6_mreq = struct {
	ipv6mr_multiaddr struct {
		u struct {
			_    [0]uint16
			Byte [16]u_char
		}
	}
	ipv6mr_interface uint32
} /* ws2ipdef.h:23:9 */

type IPV6_MREQ = ipv6_mreq /* ws2ipdef.h:26:3 */

type sockaddr_in6_old = struct {
	sin6_family   int16
	sin6_port     u_short
	sin6_flowinfo u_long
	sin6_addr     struct {
		u struct {
			_    [0]uint16
			Byte [16]u_char
		}
	}
} /* ws2ipdef.h:28:1 */

type sockaddr_gen1 = struct {
	_       [0]uint32
	Address struct {
		sa_family u_short
		sa_data   [14]int8
	}
	_ [8]byte
} /* ws2ipdef.h:35:9 */

type sockaddr_gen = sockaddr_gen1 /* ws2ipdef.h:39:3 */

type sockaddr_in6 = struct {
	sin6_family   int16
	sin6_port     u_short
	sin6_flowinfo u_long
	sin6_addr     struct {
		u struct {
			_    [0]uint16
			Byte [16]u_char
		}
	}
	__24 struct{ sin6_scope_id u_long }
} /* ws2ipdef.h:41:1 */

type SOCKADDR_IN6 = sockaddr_in6 /* ws2ipdef.h:52:29 */
type PSOCKADDR_IN6 = uintptr     /* ws2ipdef.h:53:29 */
type LPSOCKADDR_IN6 = uintptr    /* ws2ipdef.h:54:29 */

type _INTERFACE_INFO = struct {
	iiFlags            u_long
	iiAddress          sockaddr_gen
	iiBroadcastAddress sockaddr_gen
	iiNetmask          sockaddr_gen
} /* ws2ipdef.h:56:9 */

type INTERFACE_INFO = _INTERFACE_INFO /* ws2ipdef.h:61:3 */
type LPINTERFACE_INFO = uintptr       /* ws2ipdef.h:61:18 */

type MULTICAST_MODE_TYPE = uint32 /* ws2ipdef.h:66:3 */

type _sockaddr_in6_pair = struct {
	SourceAddress      PSOCKADDR_IN6
	DestinationAddress PSOCKADDR_IN6
} /* ws2ipdef.h:68:9 */

type SOCKADDR_IN6_PAIR = _sockaddr_in6_pair /* ws2ipdef.h:71:3 */
type PSOCKADDR_IN6_PAIR = uintptr           /* ws2ipdef.h:71:22 */

type _SOCKADDR_INET = struct {
	Ipv4 SOCKADDR_IN
	_    [12]byte
} /* ws2ipdef.h:73:9 */

type SOCKADDR_INET = _SOCKADDR_INET /* ws2ipdef.h:77:3 */
type PSOCKADDR_INET = uintptr       /* ws2ipdef.h:77:18 */

type group_filter = struct {
	gf_interface ULONG
	_            [4]byte
	gf_group     SOCKADDR_STORAGE
	gf_fmode     MULTICAST_MODE_TYPE
	gf_numsrc    ULONG
	gf_slist     [1]SOCKADDR_STORAGE
} /* ws2ipdef.h:79:9 */

type GROUP_FILTER = group_filter /* ws2ipdef.h:85:3 */
type PGROUP_FILTER = uintptr     /* ws2ipdef.h:85:17 */

type group_req = struct {
	gr_interface ULONG
	_            [4]byte
	gr_group     SOCKADDR_STORAGE
} /* ws2ipdef.h:87:9 */

type GROUP_REQ = group_req /* ws2ipdef.h:90:3 */
type PGROUP_REQ = uintptr  /* ws2ipdef.h:90:14 */

type group_source_req = struct {
	gsr_interface ULONG
	_             [4]byte
	gsr_group     SOCKADDR_STORAGE
	gsr_source    SOCKADDR_STORAGE
} /* ws2ipdef.h:92:9 */

type GROUP_SOURCE_REQ = group_source_req /* ws2ipdef.h:96:3 */
type PGROUP_SOURCE_REQ = uintptr         /* ws2ipdef.h:96:21 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type ip_mreq = struct {
	imr_multiaddr struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	imr_interface struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
} /* _ip_mreq1.h:12:1 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type ip_mreq_source = struct {
	imr_multiaddr struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	imr_sourceaddr struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	imr_interface struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
} /* ws2tcpip.h:22:1 */

type ip_msfilter = struct {
	imsf_multiaddr struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	imsf_interface struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
	imsf_fmode  u_long
	imsf_numsrc u_long
	imsf_slist  [1]struct {
		S_un struct {
			_      [0]uint32
			S_un_b struct {
				s_b1 u_char
				s_b2 u_char
				s_b3 u_char
				s_b4 u_char
			}
		}
	}
} /* ws2tcpip.h:28:1 */

// Those declarations are mandatory for Open Group Base spec

type _INTERFACE_INFO_EX = struct {
	iiFlags            u_long
	iiAddress          SOCKET_ADDRESS
	iiBroadcastAddress SOCKET_ADDRESS
	iiNetmask          SOCKET_ADDRESS
} /* ws2tcpip.h:157:9 */

// Those declarations are mandatory for Open Group Base spec

type INTERFACE_INFO_EX = _INTERFACE_INFO_EX /* ws2tcpip.h:162:3 */
type LPINTERFACE_INFO_EX = uintptr          /* ws2tcpip.h:162:21 */

type in_pktinfo = struct {
	ipi_addr    IN_ADDR
	ipi_ifindex UINT
} /* ws2tcpip.h:170:9 */

type IN_PKTINFO = in_pktinfo /* ws2tcpip.h:173:3 */

type in6_pktinfo = struct {
	ipi6_addr    IN6_ADDR
	ipi6_ifindex UINT
} /* ws2tcpip.h:177:9 */

type IN6_PKTINFO = in6_pktinfo /* ws2tcpip.h:180:3 */

type addrinfo = struct {
	ai_flags     int32
	ai_family    int32
	ai_socktype  int32
	ai_protocol  int32
	ai_addrlen   size_t
	ai_canonname uintptr
	ai_addr      uintptr
	ai_next      uintptr
} /* ws2tcpip.h:196:9 */

type ADDRINFOA = addrinfo /* ws2tcpip.h:205:3 */
type PADDRINFOA = uintptr /* ws2tcpip.h:205:13 */

type addrinfoW = struct {
	ai_flags     int32
	ai_family    int32
	ai_socktype  int32
	ai_protocol  int32
	ai_addrlen   size_t
	ai_canonname PWSTR
	ai_addr      uintptr
	ai_next      uintptr
} /* ws2tcpip.h:207:9 */

type ADDRINFOW = addrinfoW /* ws2tcpip.h:216:3 */
type PADDRINFOW = uintptr  /* ws2tcpip.h:216:13 */

type ADDRINFOT = ADDRINFOW /* ws2tcpip.h:218:35 */
type PADDRINFOT = uintptr  /* ws2tcpip.h:218:45 */

type ADDRINFO = ADDRINFOA /* ws2tcpip.h:220:19 */
type LPADDRINFO = uintptr /* ws2tcpip.h:220:28 */

type LPFN_GETADDRINFO = uintptr  /* ws2tcpip.h:254:15 */
type LPFN_GETADDRINFOW = uintptr /* ws2tcpip.h:255:15 */

type LPFN_FREEADDRINFO = uintptr  /* ws2tcpip.h:270:16 */
type LPFN_FREEADDRINFOW = uintptr /* ws2tcpip.h:271:16 */

type socklen_t = int32 /* ws2tcpip.h:278:15 */

type LPFN_GETNAMEINFO = uintptr  /* ws2tcpip.h:288:15 */
type LPFN_GETNAMEINFOW = uintptr /* ws2tcpip.h:289:15 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type tcp_keepalive = struct {
	onoff             u_long
	keepalivetime     u_long
	keepaliveinterval u_long
} /* mstcpip.h:18:1 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Undefine __mingw_<printf> macros.

type _iobuf = struct {
	_ptr      uintptr
	_cnt      int32
	_base     uintptr
	_flag     int32
	_file     int32
	_charbuf  int32
	_bufsiz   int32
	_tmpfname uintptr
} /* stdio.h:26:3 */

type FILE = _iobuf /* stdio.h:36:25 */

type _off_t = int32  /* _mingw_off_t.h:5:16 */
type off32_t = int32 /* _mingw_off_t.h:7:16 */

type _off64_t = int64 /* _mingw_off_t.h:13:39 */
type off64_t = int64  /* _mingw_off_t.h:15:39 */

type off_t = off64_t /* _mingw_off_t.h:24:17 */ // A pointer to an array of FILE

type fpos_t = int64 /* stdio.h:104:37 */

func vsnwprintf(tls *libc.TLS, s uintptr, n size_t, format uintptr, arg va_list) int32 { /* stdio.h:1213:15: */
	return libc.X_vsnwprintf(tls, s, n, format, arg)

}

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

func vswprintf(tls *libc.TLS, __stream uintptr, __count size_t, __format uintptr, __local_argv uintptr) int32 { /* swprintf.inl:27:5: */
	return vsnwprintf(tls, __stream, __count, __format, __local_argv)
}

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Define __mingw_<printf> macros.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Copyright (C) 1992-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 3, or (at your option) any later
// version.
//
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// This administrivia gets added to the beginning of limits.h
//    if the system has its own version of limits.h.

// We use _GCC_LIMITS_H_ because we want this not to match
//    any macros that the system's limits.h uses for its own purposes.

// Use "..." so that we find syslimits.h only in this same directory.
// syslimits.h stands for the system's own limits.h file.
//    If we can use it ok unmodified, then we install this text.
//    If fixincludes fixes it, then the fixed version is installed
//    instead of this text.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// File system limits
//
// NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
//       required for the NUL. TODO: Test?
// NOTE: PATH_MAX is the POSIX equivalent for Microsoft's MAX_PATH; the two
//       are semantically identical, with a limit of 259 characters for the
//       path name, plus one for a terminating NUL, for a total of 260.

// Copyright (C) 1991-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 3, or (at your option) any later
// version.
//
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// Number of bits in a `char'.

// Maximum length of a multibyte character.

// Minimum and maximum values a `signed char' can hold.

// Maximum value an `unsigned char' can hold.  (Minimum is 0).

// Minimum and maximum values a `char' can hold.

// Minimum and maximum values a `signed short int' can hold.

// Maximum value an `unsigned short int' can hold.  (Minimum is 0).

// Minimum and maximum values a `signed int' can hold.

// Maximum value an `unsigned int' can hold.  (Minimum is 0).

// Minimum and maximum values a `signed long int' can hold.
//    (Same as `int').

// Maximum value an `unsigned long int' can hold.  (Minimum is 0).

// Minimum and maximum values a `signed long long int' can hold.

// Maximum value an `unsigned long long int' can hold.  (Minimum is 0).

// Minimum and maximum values a `signed long long int' can hold.

// Maximum value an `unsigned long long int' can hold.  (Minimum is 0).

// This administrivia gets added to the end of limits.h
//    if the system has its own version of limits.h.

type _onexit_t = uintptr /* stdlib.h:49:15 */

type _div_t = struct {
	quot int32
	rem  int32
} /* stdlib.h:59:11 */

type div_t = _div_t /* stdlib.h:62:5 */

type _ldiv_t = struct {
	quot int32
	rem  int32
} /* stdlib.h:64:11 */

type ldiv_t = _ldiv_t /* stdlib.h:67:5 */

type _LDOUBLE = struct{ ld [10]uint8 } /* stdlib.h:76:5 */

type _CRT_DOUBLE = struct{ x float64 } /* stdlib.h:83:5 */

type _CRT_FLOAT = struct{ f float32 } /* stdlib.h:87:5 */

type _LONGDOUBLE = struct{ x float64 } /* stdlib.h:94:5 */

type _LDBL12 = struct{ ld12 [12]uint8 } /* stdlib.h:101:5 */

type _purecall_handler = uintptr /* stdlib.h:142:16 */

type _invalid_parameter_handler = uintptr /* stdlib.h:147:16 */

type lldiv_t = struct {
	quot int64
	rem  int64
} /* stdlib.h:699:61 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Return codes for _heapwalk()

// Values for _heapinfo.useflag

// The structure used to walk through the heap with _heapwalk.
type _heapinfo = struct {
	_pentry  uintptr
	_size    size_t
	_useflag int32
} /* malloc.h:46:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Return codes for _heapwalk()

// Values for _heapinfo.useflag

// The structure used to walk through the heap with _heapwalk.
type _HEAPINFO = _heapinfo /* malloc.h:50:5 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Undefine __mingw_<printf> macros.

type WSPIAPI_PGETADDRINFO = uintptr  /* wspiapi.h:38:13 */
type WSPIAPI_PGETNAMEINFO = uintptr  /* wspiapi.h:39:13 */
type WSPIAPI_PFREEADDRINFO = uintptr /* wspiapi.h:40:14 */

type WSPIAPI_FUNCTION = struct {
	pszName   uintptr
	pfAddress FARPROC
} /* wspiapi.h:48:5 */

type _fsize_t = uint32 /* wchar.h:81:25 */

type _wfinddata32_t = struct {
	attrib      uint32
	time_create int32
	time_access int32
	time_write  int32
	size        _fsize_t
	name        [260]wchar_t
} /* wchar.h:86:3 */

type _wfinddata32i64_t = struct {
	attrib      uint32
	time_create int32
	time_access int32
	time_write  int32
	size        int64
	name        [260]wchar_t
} /* wchar.h:95:3 */

type _wfinddata64i32_t = struct {
	attrib      uint32
	_           [4]byte
	time_create int64
	time_access int64
	time_write  int64
	size        _fsize_t
	name        [260]wchar_t
	_           [4]byte
} /* wchar.h:104:3 */

type _wfinddata64_t = struct {
	attrib      uint32
	_           [4]byte
	time_create int64
	time_access int64
	time_write  int64
	size        int64
	name        [260]wchar_t
} /* wchar.h:113:3 */

type _ino_t = uint16 /* wchar.h:409:26 */
type ino_t = uint16  /* wchar.h:411:26 */

type _dev_t = uint32 /* wchar.h:417:24 */
type dev_t = uint32  /* wchar.h:419:24 */

type _stat32 = struct {
	st_dev   _dev_t
	st_ino   _ino_t
	st_mode  uint16
	st_nlink int16
	st_uid   int16
	st_gid   int16
	_        [2]byte
	st_rdev  _dev_t
	st_size  _off_t
	st_atime int32
	st_mtime int32
	st_ctime int32
} /* _mingw_stat64.h:25:3 */

type _stat32i64 = struct {
	st_dev   _dev_t
	st_ino   _ino_t
	st_mode  uint16
	st_nlink int16
	st_uid   int16
	st_gid   int16
	_        [2]byte
	st_rdev  _dev_t
	_        [4]byte
	st_size  int64
	st_atime int32
	st_mtime int32
	st_ctime int32
	_        [4]byte
} /* _mingw_stat64.h:55:3 */

type _stat64i32 = struct {
	st_dev   _dev_t
	st_ino   _ino_t
	st_mode  uint16
	st_nlink int16
	st_uid   int16
	st_gid   int16
	_        [2]byte
	st_rdev  _dev_t
	st_size  _off_t
	st_atime int64
	st_mtime int64
	st_ctime int64
} /* _mingw_stat64.h:69:3 */

type _stat64 = struct {
	st_dev   _dev_t
	st_ino   _ino_t
	st_mode  uint16
	st_nlink int16
	st_uid   int16
	st_gid   int16
	_        [2]byte
	st_rdev  _dev_t
	_        [4]byte
	st_size  int64
	st_atime int64
	st_mtime int64
	st_ctime int64
} /* _mingw_stat64.h:83:3 */

type tm = struct {
	tm_sec   int32
	tm_min   int32
	tm_hour  int32
	tm_mday  int32
	tm_mon   int32
	tm_year  int32
	tm_wday  int32
	tm_yday  int32
	tm_isdst int32
} /* wchar.h:1361:3 */

type mbstate_t = int32 /* wchar.h:1416:15 */
type _Wint_t = wchar_t /* wchar.h:1417:19 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Define __mingw_<printf> macros.

type _TCHAR = wchar_t  /* tchar.h:110:19 */
type _TSCHAR = wchar_t /* tchar.h:111:19 */
type _TUCHAR = wchar_t /* tchar.h:112:19 */
type _TXCHAR = wchar_t /* tchar.h:113:19 */
type _TINT = wint_t    /* tchar.h:114:18 */

// dirent structures and functions

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

//---------------------------------------------------------------------------
// The following sets of #includes and #ifdefs are required to get Tcl to
// compile under the windows compilers.
//---------------------------------------------------------------------------

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type clock_t = int32 /* time.h:60:16 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type timezone = struct {
	tz_minuteswest int32
	tz_dsttime     int32
} /* time.h:289:1 */

// Adding timespec definition.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type __timeb32 = struct {
	time     int32
	millitm  uint16
	timezone int16
	dstflag  int16
	_        [2]byte
} /* timeb.h:53:3 */

type timeb = struct {
	time     time_t
	millitm  uint16
	timezone int16
	dstflag  int16
	_        [2]byte
} /* timeb.h:61:3 */

type __timeb64 = struct {
	time     int64
	millitm  uint16
	timezone int16
	dstflag  int16
	_        [2]byte
} /* timeb.h:69:3 */

type timespec = struct {
	tv_sec  time_t
	tv_nsec int32
	_       [4]byte
} /* timeb.h:90:1 */

type itimerspec = struct {
	it_interval struct {
		tv_sec  time_t
		tv_nsec int32
		_       [4]byte
	}
	it_value struct {
		tv_sec  time_t
		tv_nsec int32
		_       [4]byte
	}
} /* timeb.h:95:1 */

// POSIX 2008 says clock_gettime and timespec are defined in time.h header,
//    but other systems - like Linux, Solaris, etc - tend to declare such
//    recent extensions only if the following guards are met.
//
//    Copyright (c) 2011-2016  mingw-w64 project
//
//    Permission is hereby granted, free of charge, to any person obtaining a
//    copy of this software and associated documentation files (the "Software"),
//    to deal in the Software without restriction, including without limitation
//    the rights to use, copy, modify, merge, publish, distribute, sublicense,
//    and/or sell copies of the Software, and to permit persons to whom the
//    Software is furnished to do so, subject to the following conditions:
//
//    The above copyright notice and this permission notice shall be included in
//    all copies or substantial portions of the Software.
//
//    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
//    DEALINGS IN THE SOFTWARE.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Posix timers are supported

// Monotonic clocks are available.

// CPU-time clocks are available.

// Clock support in threads are available.

type clockid_t = int32 /* pthread_time.h:49:13 */

type _finddata32_t = struct {
	attrib      uint32
	time_create int32
	time_access int32
	time_write  int32
	size        _fsize_t
	name        [260]int8
} /* io.h:35:3 */

type _finddata32i64_t = struct {
	attrib      uint32
	time_create int32
	time_access int32
	time_write  int32
	size        int64
	name        [260]int8
	_           [4]byte
} /* io.h:44:3 */

type _finddata64i32_t = struct {
	attrib      uint32
	_           [4]byte
	time_create int64
	time_access int64
	time_write  int64
	size        _fsize_t
	name        [260]int8
} /* io.h:53:3 */

type __finddata64_t = struct {
	attrib      uint32
	_           [4]byte
	time_create int64
	time_access int64
	time_write  int64
	size        int64
	name        [260]int8
	_           [4]byte
} /* io.h:62:3 */

type _PVFV = uintptr /* corecrt_startup.h:20:14 */
type _PIFV = uintptr /* corecrt_startup.h:21:13 */
type _PVFI = uintptr /* corecrt_startup.h:22:14 */

type _onexit_table_t1 = struct {
	_first uintptr
	_last  uintptr
	_end   uintptr
} /* corecrt_startup.h:24:9 */

type _onexit_table_t = _onexit_table_t1 /* corecrt_startup.h:28:3 */

// Includes a definition of _pid_t and pid_t
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _pid_t = int32 /* types.h:60:13 */

type pid_t = _pid_t /* types.h:68:16 */

type _mode_t = uint16 /* types.h:74:24 */

type mode_t = _mode_t /* types.h:77:17 */

type useconds_t = uint32 /* types.h:84:22 */

type _sigset_t = uint32 /* types.h:106:23 */

type _tls_callback_type = uintptr /* process.h:58:16 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

//
//    Copyright (c) 2013-2016  mingw-w64 project
//
//    Permission is hereby granted, free of charge, to any person obtaining a
//    copy of this software and associated documentation files (the "Software"),
//    to deal in the Software without restriction, including without limitation
//    the rights to use, copy, modify, merge, publish, distribute, sublicense,
//    and/or sell copies of the Software, and to permit persons to whom the
//    Software is furnished to do so, subject to the following conditions:
//
//    The above copyright notice and this permission notice shall be included in
//    all copies or substantial portions of the Software.
//
//    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
//    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
//    DEALINGS IN THE SOFTWARE.

// Windows has rudimentary signals support.

type sig_atomic_t = int32 /* signal.h:18:15 */

// ISO C Standard:  7.17  Common definitions  <stddef.h>

// Any one of these symbols __need_* means that GNU libc
//    wants us just to define one data type.  So don't define
//    the symbols that indicate this file's entire job has been done.

// In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
//    defined if the corresponding type is *not* defined.
//    FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_

// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
//    Just ignore it.

// On VxWorks, <type/vxTypesBase.h> may have defined macros like
//    _TYPE_size_t which will typedef size_t.  fixincludes patched the
//    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
//    not defined, and so that defining this macro defines _GCC_SIZE_T.
//    If we find that the macros are still defined at this point, we must
//    invoke them so that the type is defined as expected.

// In case nobody has defined these types, but we aren't running under
//    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
//    __WCHAR_TYPE__ have reasonable values.  This can happen if the
//    parts of GCC is compiled by an older compiler, that actually
//    include gstddef.h, such as collect2.

// Signed type of difference of two pointers.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// Unsigned type of `sizeof' something.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// Wide character type.
//    Locale-writers should change this as necessary to
//    be big enough to hold unique values not between 0 and 127,
//    and not (wchar_t) -1, for each defined multibyte character.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

//  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
//     are already defined.
//  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.

// A null pointer constant.

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.17  Common definitions  <stddef.h>

// Any one of these symbols __need_* means that GNU libc
//    wants us just to define one data type.  So don't define
//    the symbols that indicate this file's entire job has been done.
// snaroff@next.com says the NeXT needs this.

// This avoids lossage on SunOS but only if stdtypes.h comes first.
//    There's no way to win with the other order!  Sun lossage.

// On 4.3bsd-net2, make sure ansi.h is included, so we have
//    one less case to deal with in the following.
// On FreeBSD 5, machine/ansi.h does not exist anymore...

// In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
//    defined if the corresponding type is *not* defined.
//    FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_.
//    NetBSD defines _I386_ANSI_H_ and _X86_64_ANSI_H_ instead of _ANSI_H_

// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
//    Just ignore it.

// On VxWorks, <type/vxTypesBase.h> may have defined macros like
//    _TYPE_size_t which will typedef size_t.  fixincludes patched the
//    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
//    not defined, and so that defining this macro defines _GCC_SIZE_T.
//    If we find that the macros are still defined at this point, we must
//    invoke them so that the type is defined as expected.

// In case nobody has defined these types, but we aren't running under
//    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
//    __WCHAR_TYPE__ have reasonable values.  This can happen if the
//    parts of GCC is compiled by an older compiler, that actually
//    include gstddef.h, such as collect2.

// Signed type of difference of two pointers.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// If this symbol has done its job, get rid of it.

// Unsigned type of `sizeof' something.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// Wide character type.
//    Locale-writers should change this as necessary to
//    be big enough to hold unique values not between 0 and 127,
//    and not (wchar_t) -1, for each defined multibyte character.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

//  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
//     are already defined.
//  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.
//  NetBSD 5 requires the I386_ANSI_H and X86_64_ANSI_H checks here.

// A null pointer constant.

// Offset of member MEMBER in a struct of type TYPE.

// Type whose alignment is supported in every context and is at least
//    as great as that of any standard type not using alignment
//    specifiers.
type max_align_t = struct {
	__max_align_ll   int64
	__max_align_ld   float64
	__max_align_f128 float64
} /* stddef.h:438:3 */

// 7.18.1.1  Exact-width integer types
type int8_t = int8     /* stdint.h:35:21 */
type uint8_t = uint8   /* stdint.h:36:25 */
type int16_t = int16   /* stdint.h:37:16 */
type uint16_t = uint16 /* stdint.h:38:25 */
type int32_t = int32   /* stdint.h:39:14 */
type uint32_t = uint32 /* stdint.h:40:20 */
type int64_t = int64   /* stdint.h:41:38 */
type uint64_t = uint64 /* stdint.h:42:48 */

// 7.18.1.2  Minimum-width integer types
type int_least8_t = int8     /* stdint.h:45:21 */
type uint_least8_t = uint8   /* stdint.h:46:25 */
type int_least16_t = int16   /* stdint.h:47:16 */
type uint_least16_t = uint16 /* stdint.h:48:25 */
type int_least32_t = int32   /* stdint.h:49:14 */
type uint_least32_t = uint32 /* stdint.h:50:20 */
type int_least64_t = int64   /* stdint.h:51:38 */
type uint_least64_t = uint64 /* stdint.h:52:48 */

// 7.18.1.3  Fastest minimum-width integer types
//  Not actually guaranteed to be fastest for all purposes
//  Here we use the exact-width types for 8 and 16-bit ints.
type int_fast8_t = int8     /* stdint.h:58:21 */
type uint_fast8_t = uint8   /* stdint.h:59:23 */
type int_fast16_t = int16   /* stdint.h:60:16 */
type uint_fast16_t = uint16 /* stdint.h:61:25 */
type int_fast32_t = int32   /* stdint.h:62:14 */
type uint_fast32_t = uint32 /* stdint.h:63:24 */
type int_fast64_t = int64   /* stdint.h:64:38 */
type uint_fast64_t = uint64 /* stdint.h:65:48 */

// 7.18.1.5  Greatest-width integer types
type intmax_t = int64   /* stdint.h:68:38 */
type uintmax_t = uint64 /* stdint.h:69:48 */

// 7.18.2  Limits of specified-width integer types

// 7.18.2.1  Limits of exact-width integer types

// 7.18.2.2  Limits of minimum-width integer types

// 7.18.2.3  Limits of fastest minimum-width integer types

// 7.18.2.4  Limits of integer types capable of holding
//     object pointers

// 7.18.2.5  Limits of greatest-width integer types

// 7.18.3  Limits of other integer types

// wint_t is unsigned short for compatibility with MS runtime

// 7.18.4  Macros for integer constants

// 7.18.4.1  Macros for minimum-width integer constants
//
//     Accoding to Douglas Gwyn <gwyn@arl.mil>:
// 	"This spec was changed in ISO/IEC 9899:1999 TC1; in ISO/IEC
// 	9899:1999 as initially published, the expansion was required
// 	to be an integer constant of precisely matching type, which
// 	is impossible to accomplish for the shorter types on most
// 	platforms, because C99 provides no standard way to designate
// 	an integer constant with width less than that of type int.
// 	TC1 changed this to require just an integer constant
// 	*expression* with *promoted* type."
//
// 	The trick used here is from Clive D W Feather.

//  The 'trick' doesn't work in C89 for long long because, without
//     suffix, (val) will be evaluated as int, not intmax_t

// 7.18.4.2  Macros for greatest-width integer constants

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// ISO C Standard:  7.17  Common definitions  <stddef.h>

// Any one of these symbols __need_* means that GNU libc
//    wants us just to define one data type.  So don't define
//    the symbols that indicate this file's entire job has been done.

// In 4.3bsd-net2, machine/ansi.h defines these symbols, which are
//    defined if the corresponding type is *not* defined.
//    FreeBSD-2.1 defines _MACHINE_ANSI_H_ instead of _ANSI_H_

// Sequent's header files use _PTRDIFF_T_ in some conflicting way.
//    Just ignore it.

// On VxWorks, <type/vxTypesBase.h> may have defined macros like
//    _TYPE_size_t which will typedef size_t.  fixincludes patched the
//    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
//    not defined, and so that defining this macro defines _GCC_SIZE_T.
//    If we find that the macros are still defined at this point, we must
//    invoke them so that the type is defined as expected.

// In case nobody has defined these types, but we aren't running under
//    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
//    __WCHAR_TYPE__ have reasonable values.  This can happen if the
//    parts of GCC is compiled by an older compiler, that actually
//    include gstddef.h, such as collect2.

// Signed type of difference of two pointers.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// If this symbol has done its job, get rid of it.

// Unsigned type of `sizeof' something.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

// Wide character type.
//    Locale-writers should change this as necessary to
//    be big enough to hold unique values not between 0 and 127,
//    and not (wchar_t) -1, for each defined multibyte character.

// Define this type if we are doing the whole job,
//    or if we want this type in particular.

//  In 4.3bsd-net2, leave these undefined to indicate that size_t, etc.
//     are already defined.
//  BSD/OS 3.1 and FreeBSD [23].x require the MACHINE_ANSI_H check here.

// A null pointer constant.

// Offset of member MEMBER in a struct of type TYPE.

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.17  Common definitions  <stddef.h>

type imaxdiv_t = struct {
	quot intmax_t
	rem  intmax_t
} /* inttypes.h:23:4 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _utimbuf = struct {
	actime  time_t
	modtime time_t
} /* utime.h:58:3 */

type __utimbuf32 = struct {
	actime  int32
	modtime int32
} /* utime.h:63:3 */

type __utimbuf64 = struct {
	actime  int64
	modtime int64
} /* utime.h:68:3 */

type utimbuf = struct {
	actime  time_t
	modtime time_t
} /* utime.h:74:3 */

type utimbuf32 = struct {
	actime  int32
	modtime int32
} /* utime.h:79:3 */

// The following defines redefine the Windows Socket errors as
// BSD errors so Tcl_PosixError can do the right thing.

// Visual Studio doesn't have these, so just choose some high numbers

// Signals not known to the standard ANSI signal.h.  These are used
// by Tcl_WaitPid() and generic/tclPosixStr.c

// Supply definitions for macros to query wait status, if not already
// defined in header files above.

// Define constants for waitpid() system call if they aren't defined
// by a system header file.

// Define access mode constants if they aren't already defined.

// Define macros to query file type bits, if they're not already
// defined.

// Windows compilers do not define S_IFBLK. However, Tcl uses it in
// GetTypeFromMode to identify blockSpecial devices based on the
// value in the statsbuf st_mode field. We have no other way to pass this
// from NativeStat on Windows so are forced to define it here.
// The definition here is essentially what is seen on Linux and MingW.
// XXX - the root problem is Tcl using Unix definitions instead of
// abstracting the structure into a platform independent one. Sigh - perhaps
// Tcl 9

// Define MAXPATHLEN in terms of MAXPATH if available

// Define pid_t and uid_t if they're not already defined.

// Visual C++ has some odd names for common functions, so we need to
// define a few macros to handle them.  Also, it defines EDEADLOCK and
// EDEADLK as the same value, which confuses Tcl_ErrnoId().

// Borland's timezone and environ functions.

// MSVC 8.0 started to mark many standard C library functions depreciated
// including the *printf family and others. Tell it to shut up.
// (_MSC_VER is 1200 for VC6, 1300 or 1310 for vc7.net, 1400 for 8.0)

//---------------------------------------------------------------------------
// The following macros and declarations represent the interface between
// generic and windows-specific parts of Tcl.  Some of the macros may
// override functions declared in tclInt.h.
//---------------------------------------------------------------------------

// The default platform eol translation on Windows is TCL_TRANSLATE_CRLF:

// Declare dynamic loading extension macro.

// The following define ensures that we use the native putenv
// implementation to modify the environment array.  This keeps
// the C level environment in synch with the system level environment.

// Msvcrt's putenv() copies the string rather than takes ownership of it.

// Older version of Mingw are known to lack a MWMO_ALERTABLE define.

// The following defines wrap the system memory allocation routines for
// use by tclAlloc.c.

// This type is not defined in the Windows headers

// The following macros have trivial definitions, allowing generic code to
// address platform-specific issues.

// The following macros and declarations wrap the C runtime library
// functions.

// tcl.h --
//
//	This header file describes the externally-visible facilities of the
//	Tcl interpreter.
//
// Copyright (c) 1987-1994 The Regents of the University of California.
// Copyright (c) 1993-1996 Lucent Technologies.
// Copyright (c) 1994-1998 Sun Microsystems, Inc.
// Copyright (c) 1998-2000 by Scriptics Corporation.
// Copyright (c) 2002 by Kevin B. Kenny.  All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// For C++ compilers, use extern "C"

// The following defines are used to indicate the various release levels.

// When version numbers change here, must also go into the following files and
// update the version numbers:
//
// library/init.tcl	(1 LOC patch)
// unix/configure.in	(2 LOC Major, 2 LOC minor, 1 LOC patch)
// win/configure.in	(as above)
// win/tcl.m4		(not patchlevel)
// README		(sections 0 and 2, with and without separator)
// macosx/Tcl-Common.xcconfig (not patchlevel) 1 LOC
// win/README		(not patchlevel) (sections 0 and 2)
// unix/tcl.spec	(1 LOC patch)
// tools/tcl.hpj.in	(not patchlevel, for windows installer)

//----------------------------------------------------------------------------
// The following definitions set up the proper options for Windows compilers.
// We use this method because there is no autoconf equivalent.

// Utility macros: STRINGIFY takes an argument and wraps it in "" (double
// quotation marks), JOIN joins two arguments.

// A special definition used to allow this header file to be included from
// windows resource files so that they can obtain version information.
// RC_INVOKED is defined by default by the windows RC tool.
//
// Resource compilers don't like all the C stuff, like typedefs and function
// declarations, that occur below, so block them out.

// Special macro to define mutexes, that doesn't do anything if we are not
// using threads.

// Tcl's public routine Tcl_FSSeek() uses the values SEEK_SET, SEEK_CUR, and
// SEEK_END, all #define'd by stdio.h .
//
// Also, many extensions need stdio.h, and they've grown accustomed to tcl.h
// providing it for them rather than #include-ing it themselves as they
// should, so also for their sake, we keep the #include to be consistent with
// prior Tcl releases.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

//----------------------------------------------------------------------------
// Support for functions with a variable number of arguments.
//
// The following TCL_VARARGS* macros are to support old extensions
// written for older versions of Tcl where the macros permitted
// support for the varargs.h system as well as stdarg.h .
//
// New code should just directly be written to use stdarg.h conventions.

// Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with GCC; see the file COPYING.  If not, write to
// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
// Boston, MA 02110-1301, USA.

// As a special exception, if you include this header file into source
//    files compiled by GCC, this header file does not by itself cause
//    the resulting executable to be covered by the GNU General Public
//    License.  This exception does not however invalidate any other
//    reasons why the executable file might be covered by the GNU General
//    Public License.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// include mingw stuff
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.15  Variable arguments  <stdarg.h>

// Allow a part of Tcl's API to be explicitly marked as deprecated.
//
// Used to make TIP 330/336 generate moans even if people use the
// compatibility macros. Change your code, guys! We won't support you forever.

//----------------------------------------------------------------------------
// Macros used to declare a function to be exported by a DLL. Used by Windows,
// maps to no-op declarations on non-Windows systems. The default build on
// windows is for a DLL, which causes the DLLIMPORT and DLLEXPORT macros to be
// nonempty. To build a static library, the macro STATIC_BUILD should be
// defined.
//
// Note: when building static but linking dynamically to MSVCRT we must still
//       correctly decorate the C library imported function.  Use CRTIMPORT
//       for this purpose.  _DLL is defined by the compiler when linking to
//       MSVCRT.

// These macros are used to control whether functions are being declared for
// import or export. If a function is being declared while it is being built
// to be included in a shared library, then it should have the DLLEXPORT
// storage class. If is being declared for use by a module that is going to
// link against the shared library, then it should have the DLLIMPORT storage
// class. If the symbol is beind declared for a static build or for use from a
// stub library, then the storage class should be empty.
//
// The convention is that a macro called BUILD_xxxx, where xxxx is the name of
// a library we are building, is set on the compile line for sources that are
// to be placed in the library. When this macro is set, the storage class will
// be set to DLLEXPORT. At the end of the header file, the storage class will
// be reset to DLLIMPORT.

// The following _ANSI_ARGS_ macro is to support old extensions
// written for older versions of Tcl where it permitted support
// for compilers written in the pre-prototype era of C.
//
// New code should use prototypes.

// Definitions that allow this header file to be used either with or without
// ANSI C features.

// Make sure EXTERN isn't defined elsewhere.

//----------------------------------------------------------------------------
// The following code is copied from winnt.h. If we don't replicate it here,
// then <windows.h> can't be included after tcl.h, since tcl.h also defines
// VOID. This block is skipped under Cygwin and Mingw.

// Macro to use instead of "void" for arguments that must have type "void *"
// in ANSI C; maps them to type "char *" in non-ANSI systems.

// Miscellaneous declarations.

type ClientData = uintptr /* tcl.h:340:15 */

// Darwin specific configure overrides (to support fat compiles, where
// configure runs only once for multiple architectures):

// Define Tcl_WideInt to be a type that is (at least) 64-bits wide, and define
// Tcl_WideUInt to be the unsigned variant of that type (assuming that where
// we have one, we can have the other.)
//
// Also defines the following macros:
// TCL_WIDE_INT_IS_LONG - if wide ints are really longs (i.e. we're on a
//	LP64 system such as modern Solaris or Linux ... not including Win64)
// Tcl_WideAsLong - forgetful converter from wideInt to long.
// Tcl_LongAsWide - sign-extending converter from long to wideInt.
// Tcl_WideAsDouble - converter from wideInt to double.
// Tcl_DoubleAsWide - converter from double to wideInt.
//
// The following invariant should hold for any long value 'longVal':
//	longVal == Tcl_WideAsLong(Tcl_LongAsWide(longVal))
//
// Note on converting between Tcl_WideInt and strings. This implementation (in
// tclObj.c) depends on the function
// sprintf(...,"%" TCL_LL_MODIFIER "d",...).

type Tcl_WideInt = int64   /* tcl.h:415:28 */
type Tcl_WideUInt = uint64 /* tcl.h:416:36 */

// The next short section of defines are only done when not running on Windows
// or some other strange platform.

type Tcl_StatBuf = _stat32i64 /* tcl.h:448:28 */

//----------------------------------------------------------------------------
// Data structures defined opaquely in this module. The definitions below just
// provide dummy types. A few fields are made visible in Tcl_Interp
// structures, namely those used for returning a string result from commands.
// Direct access to the result field is discouraged in Tcl 8.0. The
// interpreter result is either an object or a string, and the two values are
// kept consistent unless some C code sets interp->result directly.
// Programmers should use either the function Tcl_GetObjResult() or
// Tcl_GetStringResult() to read the interpreter's result. See the SetResult
// man page for details.
//
// Note: any change to the Tcl_Interp definition below must be mirrored in the
// "real" definition in tclInt.h.
//
// Note: Tcl_ObjCmdProc functions do not directly set result and freeProc.
// Instead, they set a Tcl_Obj member in the "real" structure that can be
// accessed with Tcl_GetObjResult() and Tcl_SetObjResult().

type Tcl_Interp1 = struct {
	resultDontUse    uintptr
	freeProcDontUse  uintptr
	errorLineDontUse int32
} /* tcl.h:493:9 */

//----------------------------------------------------------------------------
// Data structures defined opaquely in this module. The definitions below just
// provide dummy types. A few fields are made visible in Tcl_Interp
// structures, namely those used for returning a string result from commands.
// Direct access to the result field is discouraged in Tcl 8.0. The
// interpreter result is either an object or a string, and the two values are
// kept consistent unless some C code sets interp->result directly.
// Programmers should use either the function Tcl_GetObjResult() or
// Tcl_GetStringResult() to read the interpreter's result. See the SetResult
// man page for details.
//
// Note: any change to the Tcl_Interp definition below must be mirrored in the
// "real" definition in tclInt.h.
//
// Note: Tcl_ObjCmdProc functions do not directly set result and freeProc.
// Instead, they set a Tcl_Obj member in the "real" structure that can be
// accessed with Tcl_GetObjResult() and Tcl_SetObjResult().

type Tcl_Interp = Tcl_Interp1 /* tcl.h:525:1 */

type Tcl_AsyncHandler = uintptr       /* tcl.h:527:34 */
type Tcl_Channel = uintptr            /* tcl.h:528:29 */
type Tcl_ChannelTypeVersion = uintptr /* tcl.h:529:40 */
type Tcl_Command = uintptr            /* tcl.h:530:29 */
type Tcl_Condition = uintptr          /* tcl.h:531:31 */
type Tcl_Dict = uintptr               /* tcl.h:532:26 */
type Tcl_EncodingState = uintptr      /* tcl.h:533:35 */
type Tcl_Encoding = uintptr           /* tcl.h:534:30 */
type Tcl_Event1 = struct {
	proc    uintptr
	nextPtr uintptr
} /* tcl.h:535:9 */

type Tcl_Event = Tcl_Event1    /* tcl.h:535:26 */
type Tcl_InterpState = uintptr /* tcl.h:536:33 */
type Tcl_LoadHandle_ = struct {
	clientData        ClientData
	findSymbolProcPtr uintptr
	unloadFileProcPtr uintptr
} /* tcl.h:537:9 */

type Tcl_LoadHandle = uintptr    /* tcl.h:537:32 */
type Tcl_Mutex = uintptr         /* tcl.h:538:27 */
type Tcl_Pid = uintptr           /* tcl.h:539:25 */
type Tcl_RegExp = uintptr        /* tcl.h:540:28 */
type Tcl_ThreadDataKey = uintptr /* tcl.h:541:35 */
type Tcl_ThreadId = uintptr      /* tcl.h:542:30 */
type Tcl_TimerToken = uintptr    /* tcl.h:543:32 */
type Tcl_Trace = uintptr         /* tcl.h:544:27 */
type Tcl_Var = uintptr           /* tcl.h:545:25 */
type Tcl_ZlibStream = uintptr    /* tcl.h:546:32 */

// Threading function return types used for abstracting away platform
// differences when writing a Tcl_ThreadCreateProc. See the NewThread function
// in generic/tclThreadTest.c for it's usage.

// Definition of values for default stacksize and the possible flags to be
// given to Tcl_CreateThread.

// Flag values passed to Tcl_StringCaseMatch.

// Flag values passed to Tcl_GetRegExpFromObj.

// Flags values passed to Tcl_RegExpExecObj.

// Structures filled in by Tcl_RegExpInfo. Note that all offset values are
// relative to the start of the match string, not the beginning of the entire
// string.

type Tcl_RegExpIndices1 = struct {
	start int32
	end   int32
} /* tcl.h:623:9 */

// Threading function return types used for abstracting away platform
// differences when writing a Tcl_ThreadCreateProc. See the NewThread function
// in generic/tclThreadTest.c for it's usage.

// Definition of values for default stacksize and the possible flags to be
// given to Tcl_CreateThread.

// Flag values passed to Tcl_StringCaseMatch.

// Flag values passed to Tcl_GetRegExpFromObj.

// Flags values passed to Tcl_RegExpExecObj.

// Structures filled in by Tcl_RegExpInfo. Note that all offset values are
// relative to the start of the match string, not the beginning of the entire
// string.

type Tcl_RegExpIndices = Tcl_RegExpIndices1 /* tcl.h:628:3 */

type Tcl_RegExpInfo1 = struct {
	nsubs       int32
	matches     uintptr
	extendStart int32
	reserved    int32
} /* tcl.h:630:9 */

type Tcl_RegExpInfo = Tcl_RegExpInfo1 /* tcl.h:637:3 */

// Picky compilers complain if this typdef doesn't appear before the struct's
// reference in tclDecls.h.

type Tcl_Stat_ = uintptr    /* tcl.h:644:21 */
type Tcl_OldStat_ = uintptr /* tcl.h:645:21 */

//----------------------------------------------------------------------------
// When a TCL command returns, the interpreter contains a result from the
// command. Programmers are strongly encouraged to use one of the functions
// Tcl_GetObjResult() or Tcl_GetStringResult() to read the interpreter's
// result. See the SetResult man page for details. Besides this result, the
// command function returns an integer code, which is one of the following:
//
// TCL_OK		Command completed normally; the interpreter's result
//			contains the command's result.
// TCL_ERROR		The command couldn't be completed successfully; the
//			interpreter's result describes what went wrong.
// TCL_RETURN		The command requests that the current function return;
//			the interpreter's result contains the function's
//			return value.
// TCL_BREAK		The command requests that the innermost loop be
//			exited; the interpreter's result is meaningless.
// TCL_CONTINUE		Go on to the next iteration of the current loop; the
//			interpreter's result is meaningless.

//----------------------------------------------------------------------------
// Flags to control what substitutions are performed by Tcl_SubstObj():

// Argument descriptors for math function callbacks in expressions:

type Tcl_ValueType = uint32 /* tcl.h:692:3 */

type Tcl_Value1 = struct {
	__type      Tcl_ValueType
	intValue    int32
	doubleValue float64
	wideValue   Tcl_WideInt
} /* tcl.h:694:9 */

type Tcl_Value = Tcl_Value1 /* tcl.h:700:3 */

// Forward declaration of Tcl_Obj to prevent an error when the forward
// reference to Tcl_Obj is encountered in the function types declared below.

type Tcl_Obj1 = struct {
	refCount    int32
	bytes       uintptr
	length      int32
	typePtr     uintptr
	internalRep struct {
		_         [0]uint64
		longValue int32
		_         [4]byte
	}
} /* tcl.h:707:1 */

//----------------------------------------------------------------------------
// The following structure represents a type of object, which is a particular
// internal representation for an object plus a set of functions that provide
// standard operations on objects of that type.

type Tcl_ObjType1 = struct {
	name             uintptr
	freeIntRepProc   uintptr
	dupIntRepProc    uintptr
	updateStringProc uintptr
	setFromAnyProc   uintptr
} /* tcl.h:707:1 */

//----------------------------------------------------------------------------
// The following structure represents a type of object, which is a particular
// internal representation for an object plus a set of functions that provide
// standard operations on objects of that type.

type Tcl_ObjType = Tcl_ObjType1 /* tcl.h:796:3 */

// One of the following structures exists for each object in the Tcl system.
// An object stores a value as either a string, some internal representation,
// or both.

type Tcl_Obj = Tcl_Obj1 /* tcl.h:843:3 */

//----------------------------------------------------------------------------
// The following structure contains the state needed by Tcl_SaveResult. No-one
// outside of Tcl should access any of these fields. This structure is
// typically allocated on the stack.

type Tcl_SavedResult1 = struct {
	result       uintptr
	freeProc     uintptr
	objResultPtr uintptr
	appendResult uintptr
	appendAvl    int32
	appendUsed   int32
	resultSpace  [201]int8
	_            [3]byte
} /* tcl.h:864:9 */

//----------------------------------------------------------------------------
// The following structure contains the state needed by Tcl_SaveResult. No-one
// outside of Tcl should access any of these fields. This structure is
// typically allocated on the stack.

type Tcl_SavedResult = Tcl_SavedResult1 /* tcl.h:872:3 */

//----------------------------------------------------------------------------
// The following definitions support Tcl's namespace facility. Note: the first
// five fields must match exactly the fields in a Namespace structure (see
// tclInt.h).

type Tcl_Namespace1 = struct {
	name       uintptr
	fullName   uintptr
	clientData ClientData
	deleteProc uintptr
	parentPtr  uintptr
} /* tcl.h:881:9 */

//----------------------------------------------------------------------------
// The following definitions support Tcl's namespace facility. Note: the first
// five fields must match exactly the fields in a Namespace structure (see
// tclInt.h).

type Tcl_Namespace = Tcl_Namespace1 /* tcl.h:897:3 */

//----------------------------------------------------------------------------
// The following structure represents a call frame, or activation record. A
// call frame defines a naming context for a procedure call: its local scope
// (for local variables) and its namespace scope (used for non-local
// variables; often the global :: namespace). A call frame can also define the
// naming context for a namespace eval or namespace inscope command: the
// namespace in which the command's code should execute. The Tcl_CallFrame
// structures exist only while procedures or namespace eval/inscope's are
// being executed, and provide a Tcl call stack.
//
// A call frame is initialized and pushed using Tcl_PushCallFrame and popped
// using Tcl_PopCallFrame. Storage for a Tcl_CallFrame must be provided by the
// Tcl_PushCallFrame caller, and callers typically allocate them on the C call
// stack for efficiency. For this reason, Tcl_CallFrame is defined as a
// structure and not as an opaque token. However, most Tcl_CallFrame fields
// are hidden since applications should not access them directly; others are
// declared as "dummyX".
//
// WARNING!! The structure definition must be kept consistent with the
// CallFrame structure in tclInt.h. If you change one, change the other.

type Tcl_CallFrame1 = struct {
	nsPtr   uintptr
	dummy1  int32
	dummy2  int32
	dummy3  uintptr
	dummy4  uintptr
	dummy5  uintptr
	dummy6  int32
	dummy7  uintptr
	dummy8  uintptr
	dummy9  int32
	dummy10 uintptr
	dummy11 uintptr
	dummy12 uintptr
	dummy13 uintptr
} /* tcl.h:922:9 */

//----------------------------------------------------------------------------
// The following structure represents a call frame, or activation record. A
// call frame defines a naming context for a procedure call: its local scope
// (for local variables) and its namespace scope (used for non-local
// variables; often the global :: namespace). A call frame can also define the
// naming context for a namespace eval or namespace inscope command: the
// namespace in which the command's code should execute. The Tcl_CallFrame
// structures exist only while procedures or namespace eval/inscope's are
// being executed, and provide a Tcl call stack.
//
// A call frame is initialized and pushed using Tcl_PushCallFrame and popped
// using Tcl_PopCallFrame. Storage for a Tcl_CallFrame must be provided by the
// Tcl_PushCallFrame caller, and callers typically allocate them on the C call
// stack for efficiency. For this reason, Tcl_CallFrame is defined as a
// structure and not as an opaque token. However, most Tcl_CallFrame fields
// are hidden since applications should not access them directly; others are
// declared as "dummyX".
//
// WARNING!! The structure definition must be kept consistent with the
// CallFrame structure in tclInt.h. If you change one, change the other.

type Tcl_CallFrame = Tcl_CallFrame1 /* tcl.h:937:3 */

//----------------------------------------------------------------------------
// Information about commands that is returned by Tcl_GetCommandInfo and
// passed to Tcl_SetCommandInfo. objProc is an objc/objv object-based command
// function while proc is a traditional Tcl argc/argv string-based function.
// Tcl_CreateObjCommand and Tcl_CreateCommand ensure that both objProc and
// proc are non-NULL and can be called to execute the command. However, it may
// be faster to call one instead of the other. The member isNativeObjectProc
// is set to 1 if an object-based function was registered by
// Tcl_CreateObjCommand, and to 0 if a string-based function was registered by
// Tcl_CreateCommand. The other function is typically set to a compatibility
// wrapper that does string-to-object or object-to-string argument conversions
// then calls the other function.

type Tcl_CmdInfo1 = struct {
	isNativeObjectProc int32
	objProc            uintptr
	objClientData      ClientData
	proc               uintptr
	clientData         ClientData
	deleteProc         uintptr
	deleteData         ClientData
	namespacePtr       uintptr
} /* tcl.h:954:9 */

//----------------------------------------------------------------------------
// Information about commands that is returned by Tcl_GetCommandInfo and
// passed to Tcl_SetCommandInfo. objProc is an objc/objv object-based command
// function while proc is a traditional Tcl argc/argv string-based function.
// Tcl_CreateObjCommand and Tcl_CreateCommand ensure that both objProc and
// proc are non-NULL and can be called to execute the command. However, it may
// be faster to call one instead of the other. The member isNativeObjectProc
// is set to 1 if an object-based function was registered by
// Tcl_CreateObjCommand, and to 0 if a string-based function was registered by
// Tcl_CreateCommand. The other function is typically set to a compatibility
// wrapper that does string-to-object or object-to-string argument conversions
// then calls the other function.

type Tcl_CmdInfo = Tcl_CmdInfo1 /* tcl.h:973:3 */

//----------------------------------------------------------------------------
// The structure defined below is used to hold dynamic strings. The only
// fields that clients should use are string and length, accessible via the
// macros Tcl_DStringValue and Tcl_DStringLength.

type Tcl_DString1 = struct {
	string      uintptr
	length      int32
	spaceAvl    int32
	staticSpace [200]int8
} /* tcl.h:983:9 */

//----------------------------------------------------------------------------
// The structure defined below is used to hold dynamic strings. The only
// fields that clients should use are string and length, accessible via the
// macros Tcl_DStringValue and Tcl_DStringLength.

type Tcl_DString = Tcl_DString1 /* tcl.h:993:3 */

// Definitions for the maximum number of digits of precision that may be
// specified in the "tcl_precision" variable, and the number of bytes of
// buffer space required by Tcl_PrintDouble.

// Definition for a number of bytes of buffer space sufficient to hold the
// string representation of an integer in base 10 (assuming the existence of
// 64-bit integers).

// Flag values passed to Tcl_ConvertElement.
// TCL_DONT_USE_BRACES forces it not to enclose the element in braces, but to
//	use backslash quoting instead.
// TCL_DONT_QUOTE_HASH disables the default quoting of the '#' character. It
//	is safe to leave the hash unquoted when the element is not the first
//	element of a list, and this flag can be used by the caller to indicate
//	that condition.

// Flag that may be passed to Tcl_GetIndexFromObj to force it to disallow
// abbreviated strings.

//----------------------------------------------------------------------------
// Flag values passed to Tcl_RecordAndEval, Tcl_EvalObj, Tcl_EvalObjv.
// WARNING: these bit choices must not conflict with the bit choices for
// evalFlag bits in tclInt.h!
//
// Meanings:
//	TCL_NO_EVAL:		Just record this command
//	TCL_EVAL_GLOBAL:	Execute script in global namespace
//	TCL_EVAL_DIRECT:	Do not compile this script
//	TCL_EVAL_INVOKE:	Magical Tcl_EvalObjv mode for aliases/ensembles
//				o Run in iPtr->lookupNsPtr or global namespace
//				o Cut out of error traces
//				o Don't reset the flags controlling ensemble
//				  error message rewriting.
//	TCL_CANCEL_UNWIND:	Magical Tcl_CancelEval mode that causes the
//				stack for the script in progress to be
//				completely unwound.
//	TCL_EVAL_NOERR:	Do no exception reporting at all, just return
//				as the caller will report.

// Special freeProc values that may be passed to Tcl_SetResult (see the man
// page for details):

// Flag values passed to variable-related functions.
// WARNING: these bit choices must not conflict with the bit choice for
// TCL_CANCEL_UNWIND, above.

// Required to support old variable/vdelete/vinfo traces.
// Indicate the semantics of the result of a trace.

// Flag values for ensemble commands.

// Flag values passed to command-related functions.

// The TCL_PARSE_PART1 flag is deprecated and has no effect. The part1 is now
// always parsed whenever the part2 is NULL. (This is to avoid a common error
// when converting code to use the new object based APIs and forgetting to
// give the flag)

// Types for linked variables:

//----------------------------------------------------------------------------
// Forward declarations of Tcl_HashTable and related types.

type Tcl_HashKeyType1 = struct {
	version         int32
	flags           int32
	hashKeyProc     uintptr
	compareKeysProc uintptr
	allocEntryProc  uintptr
	freeEntryProc   uintptr
} /* tcl.h:1152:9 */

// Definitions for the maximum number of digits of precision that may be
// specified in the "tcl_precision" variable, and the number of bytes of
// buffer space required by Tcl_PrintDouble.

// Definition for a number of bytes of buffer space sufficient to hold the
// string representation of an integer in base 10 (assuming the existence of
// 64-bit integers).

// Flag values passed to Tcl_ConvertElement.
// TCL_DONT_USE_BRACES forces it not to enclose the element in braces, but to
//	use backslash quoting instead.
// TCL_DONT_QUOTE_HASH disables the default quoting of the '#' character. It
//	is safe to leave the hash unquoted when the element is not the first
//	element of a list, and this flag can be used by the caller to indicate
//	that condition.

// Flag that may be passed to Tcl_GetIndexFromObj to force it to disallow
// abbreviated strings.

//----------------------------------------------------------------------------
// Flag values passed to Tcl_RecordAndEval, Tcl_EvalObj, Tcl_EvalObjv.
// WARNING: these bit choices must not conflict with the bit choices for
// evalFlag bits in tclInt.h!
//
// Meanings:
//	TCL_NO_EVAL:		Just record this command
//	TCL_EVAL_GLOBAL:	Execute script in global namespace
//	TCL_EVAL_DIRECT:	Do not compile this script
//	TCL_EVAL_INVOKE:	Magical Tcl_EvalObjv mode for aliases/ensembles
//				o Run in iPtr->lookupNsPtr or global namespace
//				o Cut out of error traces
//				o Don't reset the flags controlling ensemble
//				  error message rewriting.
//	TCL_CANCEL_UNWIND:	Magical Tcl_CancelEval mode that causes the
//				stack for the script in progress to be
//				completely unwound.
//	TCL_EVAL_NOERR:	Do no exception reporting at all, just return
//				as the caller will report.

// Special freeProc values that may be passed to Tcl_SetResult (see the man
// page for details):

// Flag values passed to variable-related functions.
// WARNING: these bit choices must not conflict with the bit choice for
// TCL_CANCEL_UNWIND, above.

// Required to support old variable/vdelete/vinfo traces.
// Indicate the semantics of the result of a trace.

// Flag values for ensemble commands.

// Flag values passed to command-related functions.

// The TCL_PARSE_PART1 flag is deprecated and has no effect. The part1 is now
// always parsed whenever the part2 is NULL. (This is to avoid a common error
// when converting code to use the new object based APIs and forgetting to
// give the flag)

// Types for linked variables:

//----------------------------------------------------------------------------
// Forward declarations of Tcl_HashTable and related types.

type Tcl_HashKeyType = Tcl_HashKeyType1 /* tcl.h:1152:32 */
type Tcl_HashTable1 = struct {
	buckets       uintptr
	staticBuckets [4]uintptr
	numBuckets    int32
	numEntries    int32
	rebuildSize   int32
	downShift     int32
	mask          int32
	keyType       int32
	findProc      uintptr
	createProc    uintptr
	typePtr       uintptr
} /* tcl.h:1153:9 */

type Tcl_HashTable = Tcl_HashTable1 /* tcl.h:1153:30 */
type Tcl_HashEntry1 = struct {
	nextPtr    uintptr
	tablePtr   uintptr
	hash       uintptr
	clientData ClientData
	key        struct{ oneWordValue uintptr }
} /* tcl.h:1153:9 */

type Tcl_HashEntry = Tcl_HashEntry1 /* tcl.h:1154:30 */

// Structure definition for information used to keep track of searches through
// hash tables:

type Tcl_HashSearch1 = struct {
	tablePtr     uintptr
	nextIndex    int32
	nextEntryPtr uintptr
} /* tcl.h:1308:9 */

// Structure definition for information used to keep track of searches through
// hash tables:

type Tcl_HashSearch = Tcl_HashSearch1 /* tcl.h:1314:3 */

// Acceptable key types for hash tables:
//
// TCL_STRING_KEYS:		The keys are strings, they are copied into the
//				entry.
// TCL_ONE_WORD_KEYS:		The keys are pointers, the pointer is stored
//				in the entry.
// TCL_CUSTOM_TYPE_KEYS:	The keys are arbitrary types which are copied
//				into the entry.
// TCL_CUSTOM_PTR_KEYS:		The keys are pointers to arbitrary types, the
//				pointer is stored in the entry.
//
// While maintaining binary compatibility the above have to be distinct values
// as they are used to differentiate between old versions of the hash table
// which don't have a typePtr and new ones which do. Once binary compatibility
// is discarded in favour of making more wide spread changes TCL_STRING_KEYS
// can be the same as TCL_CUSTOM_TYPE_KEYS, and TCL_ONE_WORD_KEYS can be the
// same as TCL_CUSTOM_PTR_KEYS because they simply determine how the key is
// accessed from the entry and not the behaviour.

// Structure definition for information used to keep track of searches through
// dictionaries. These fields should not be accessed by code outside
// tclDictObj.c

type Tcl_DictSearch = struct {
	next          uintptr
	epoch         int32
	dictionaryPtr Tcl_Dict
} /* tcl.h:1354:3 */

// Positions to pass to Tcl_QueueEvent:

type Tcl_QueuePosition = uint32 /* tcl.h:1389:3 */

// Values to pass to Tcl_SetServiceMode to specify the behavior of notifier
// event routines.

// The following structure keeps is used to hold a time value, either as an
// absolute time (the number of seconds from the epoch) or as an elapsed time.
// On Unix systems the epoch is Midnight Jan 1, 1970 GMT.

type Tcl_Time1 = struct {
	sec  int32
	usec int32
} /* tcl.h:1405:9 */

// Values to pass to Tcl_SetServiceMode to specify the behavior of notifier
// event routines.

// The following structure keeps is used to hold a time value, either as an
// absolute time (the number of seconds from the epoch) or as an elapsed time.
// On Unix systems the epoch is Midnight Jan 1, 1970 GMT.

type Tcl_Time = Tcl_Time1 /* tcl.h:1408:3 */

// struct Tcl_ChannelType:
//
// One such structure exists for each type (kind) of channel. It collects
// together in one place all the functions that are part of the specific
// channel type.
//
// It is recommend that the Tcl_Channel* functions are used to access elements
// of this structure, instead of direct accessing.

type Tcl_ChannelType1 = struct {
	typeName         uintptr
	version          Tcl_ChannelTypeVersion
	closeProc        uintptr
	inputProc        uintptr
	outputProc       uintptr
	seekProc         uintptr
	setOptionProc    uintptr
	getOptionProc    uintptr
	watchProc        uintptr
	getHandleProc    uintptr
	close2Proc       uintptr
	blockModeProc    uintptr
	flushProc        uintptr
	handlerProc      uintptr
	wideSeekProc     uintptr
	threadActionProc uintptr
	truncateProc     uintptr
} /* tcl.h:1524:9 */

// struct Tcl_ChannelType:
//
// One such structure exists for each type (kind) of channel. It collects
// together in one place all the functions that are part of the specific
// channel type.
//
// It is recommend that the Tcl_Channel* functions are used to access elements
// of this structure, instead of direct accessing.

type Tcl_ChannelType = Tcl_ChannelType1 /* tcl.h:1592:3 */

// The following flags determine whether the blockModeProc above should set
// the channel into blocking or nonblocking mode. They are passed as arguments
// to the blockModeProc function in the above structure.

//----------------------------------------------------------------------------
// Enum for different types of file paths.

type Tcl_PathType = uint32 /* tcl.h:1613:3 */

// The following structure is used to pass glob type data amongst the various
// glob routines and Tcl_FSMatchInDirectory.

type Tcl_GlobTypeData1 = struct {
	__type     int32
	perm       int32
	macType    uintptr
	macCreator uintptr
} /* tcl.h:1620:9 */

// The following structure is used to pass glob type data amongst the various
// glob routines and Tcl_FSMatchInDirectory.

type Tcl_GlobTypeData = Tcl_GlobTypeData1 /* tcl.h:1625:3 */

type Tcl_FSVersion = uintptr /* tcl.h:1700:31 */

//----------------------------------------------------------------------------
// Data structures related to hooking into the filesystem

// Filesystem version tag.  This was introduced in 8.4.

// struct Tcl_Filesystem:
//
// One such structure exists for each type (kind) of filesystem. It collects
// together in one place all the functions that are part of the specific
// filesystem. Tcl always accesses the filesystem through one of these
// structures.
//
// Not all entries need be non-NULL; any which are NULL are simply ignored.
// However, a complete filesystem should provide all of these functions. The
// explanations in the structure show the importance of each function.

type Tcl_Filesystem1 = struct {
	typeName                 uintptr
	structureLength          int32
	version                  Tcl_FSVersion
	pathInFilesystemProc     uintptr
	dupInternalRepProc       uintptr
	freeInternalRepProc      uintptr
	internalToNormalizedProc uintptr
	createInternalRepProc    uintptr
	normalizePathProc        uintptr
	filesystemPathTypeProc   uintptr
	filesystemSeparatorProc  uintptr
	statProc                 uintptr
	accessProc               uintptr
	openFileChannelProc      uintptr
	matchInDirectoryProc     uintptr
	utimeProc                uintptr
	linkProc                 uintptr
	listVolumesProc          uintptr
	fileAttrStringsProc      uintptr
	fileAttrsGetProc         uintptr
	fileAttrsSetProc         uintptr
	createDirectoryProc      uintptr
	removeDirectoryProc      uintptr
	deleteFileProc           uintptr
	copyFileProc             uintptr
	renameFileProc           uintptr
	copyDirectoryProc        uintptr
	lstatProc                uintptr
	loadFileProc             uintptr
	getCwdProc               uintptr
	chdirProc                uintptr
} /* tcl.h:1726:9 */

//----------------------------------------------------------------------------
// Data structures related to hooking into the filesystem

// Filesystem version tag.  This was introduced in 8.4.

// struct Tcl_Filesystem:
//
// One such structure exists for each type (kind) of filesystem. It collects
// together in one place all the functions that are part of the specific
// filesystem. Tcl always accesses the filesystem through one of these
// structures.
//
// Not all entries need be non-NULL; any which are NULL are simply ignored.
// However, a complete filesystem should provide all of these functions. The
// explanations in the structure show the importance of each function.

type Tcl_Filesystem = Tcl_Filesystem1 /* tcl.h:1873:3 */

// The following definitions are used as values for the 'linkAction' flag to
// Tcl_FSLink, or the linkProc of any filesystem. Any combination of flags can
// be given. For link creation, the linkProc should create a link which
// matches any of the types given.
//
// TCL_CREATE_SYMBOLIC_LINK -	Create a symbolic or soft link.
// TCL_CREATE_HARD_LINK -	Create a hard link.

//----------------------------------------------------------------------------
// The following structure represents the Notifier functions that you can
// override with the Tcl_SetNotifier call.

type Tcl_NotifierProcs1 = struct {
	setTimerProc          uintptr
	waitForEventProc      uintptr
	createFileHandlerProc uintptr
	deleteFileHandlerProc uintptr
	initNotifierProc      uintptr
	finalizeNotifierProc  uintptr
	alertNotifierProc     uintptr
	serviceModeHookProc   uintptr
} /* tcl.h:1894:9 */

// The following definitions are used as values for the 'linkAction' flag to
// Tcl_FSLink, or the linkProc of any filesystem. Any combination of flags can
// be given. For link creation, the linkProc should create a link which
// matches any of the types given.
//
// TCL_CREATE_SYMBOLIC_LINK -	Create a symbolic or soft link.
// TCL_CREATE_HARD_LINK -	Create a hard link.

//----------------------------------------------------------------------------
// The following structure represents the Notifier functions that you can
// override with the Tcl_SetNotifier call.

type Tcl_NotifierProcs = Tcl_NotifierProcs1 /* tcl.h:1903:3 */

//----------------------------------------------------------------------------
// The following data structures and declarations are for the new Tcl parser.
//
// For each word of a command, and for each piece of a word such as a variable
// reference, one of the following structures is created to describe the
// token.

type Tcl_Token1 = struct {
	__type        int32
	start         uintptr
	size          int32
	numComponents int32
} /* tcl.h:1914:9 */

//----------------------------------------------------------------------------
// The following data structures and declarations are for the new Tcl parser.
//
// For each word of a command, and for each piece of a word such as a variable
// reference, one of the following structures is created to describe the
// token.

type Tcl_Token = Tcl_Token1 /* tcl.h:1924:3 */

// Type values defined for Tcl_Token structures. These values are defined as
// mask bits so that it's easy to check for collections of types.
//
// TCL_TOKEN_WORD -		The token describes one word of a command,
//				from the first non-blank character of the word
//				(which may be " or {) up to but not including
//				the space, semicolon, or bracket that
//				terminates the word. NumComponents counts the
//				total number of sub-tokens that make up the
//				word. This includes, for example, sub-tokens
//				of TCL_TOKEN_VARIABLE tokens.
// TCL_TOKEN_SIMPLE_WORD -	This token is just like TCL_TOKEN_WORD except
//				that the word is guaranteed to consist of a
//				single TCL_TOKEN_TEXT sub-token.
// TCL_TOKEN_TEXT -		The token describes a range of literal text
//				that is part of a word. NumComponents is
//				always 0.
// TCL_TOKEN_BS -		The token describes a backslash sequence that
//				must be collapsed. NumComponents is always 0.
// TCL_TOKEN_COMMAND -		The token describes a command whose result
//				must be substituted into the word. The token
//				includes the enclosing brackets. NumComponents
//				is always 0.
// TCL_TOKEN_VARIABLE -		The token describes a variable substitution,
//				including the dollar sign, variable name, and
//				array index (if there is one) up through the
//				right parentheses. NumComponents tells how
//				many additional tokens follow to represent the
//				variable name. The first token will be a
//				TCL_TOKEN_TEXT token that describes the
//				variable name. If the variable is an array
//				reference then there will be one or more
//				additional tokens, of type TCL_TOKEN_TEXT,
//				TCL_TOKEN_BS, TCL_TOKEN_COMMAND, and
//				TCL_TOKEN_VARIABLE, that describe the array
//				index; numComponents counts the total number
//				of nested tokens that make up the variable
//				reference, including sub-tokens of
//				TCL_TOKEN_VARIABLE tokens.
// TCL_TOKEN_SUB_EXPR -		The token describes one subexpression of an
//				expression, from the first non-blank character
//				of the subexpression up to but not including
//				the space, brace, or bracket that terminates
//				the subexpression. NumComponents counts the
//				total number of following subtokens that make
//				up the subexpression; this includes all
//				subtokens for any nested TCL_TOKEN_SUB_EXPR
//				tokens. For example, a numeric value used as a
//				primitive operand is described by a
//				TCL_TOKEN_SUB_EXPR token followed by a
//				TCL_TOKEN_TEXT token. A binary subexpression
//				is described by a TCL_TOKEN_SUB_EXPR token
//				followed by the TCL_TOKEN_OPERATOR token for
//				the operator, then TCL_TOKEN_SUB_EXPR tokens
//				for the left then the right operands.
// TCL_TOKEN_OPERATOR -		The token describes one expression operator.
//				An operator might be the name of a math
//				function such as "abs". A TCL_TOKEN_OPERATOR
//				token is always preceded by one
//				TCL_TOKEN_SUB_EXPR token for the operator's
//				subexpression, and is followed by zero or more
//				TCL_TOKEN_SUB_EXPR tokens for the operator's
//				operands. NumComponents is always 0.
// TCL_TOKEN_EXPAND_WORD -	This token is just like TCL_TOKEN_WORD except
//				that it marks a word that began with the
//				literal character prefix "{*}". This word is
//				marked to be expanded - that is, broken into
//				words after substitution is complete.

// Parsing error types. On any parsing error, one of these values will be
// stored in the error field of the Tcl_Parse structure defined below.

// A structure of the following type is filled in by Tcl_ParseCommand. It
// describes a single command parsed from an input string.

type Tcl_Parse1 = struct {
	commentStart    uintptr
	commentSize     int32
	commandStart    uintptr
	commandSize     int32
	numWords        int32
	tokenPtr        uintptr
	numTokens       int32
	tokensAvailable int32
	errorType       int32
	string          uintptr
	end             uintptr
	interp          uintptr
	term            uintptr
	incomplete      int32
	staticTokens    [20]Tcl_Token
} /* tcl.h:2030:9 */

// Type values defined for Tcl_Token structures. These values are defined as
// mask bits so that it's easy to check for collections of types.
//
// TCL_TOKEN_WORD -		The token describes one word of a command,
//				from the first non-blank character of the word
//				(which may be " or {) up to but not including
//				the space, semicolon, or bracket that
//				terminates the word. NumComponents counts the
//				total number of sub-tokens that make up the
//				word. This includes, for example, sub-tokens
//				of TCL_TOKEN_VARIABLE tokens.
// TCL_TOKEN_SIMPLE_WORD -	This token is just like TCL_TOKEN_WORD except
//				that the word is guaranteed to consist of a
//				single TCL_TOKEN_TEXT sub-token.
// TCL_TOKEN_TEXT -		The token describes a range of literal text
//				that is part of a word. NumComponents is
//				always 0.
// TCL_TOKEN_BS -		The token describes a backslash sequence that
//				must be collapsed. NumComponents is always 0.
// TCL_TOKEN_COMMAND -		The token describes a command whose result
//				must be substituted into the word. The token
//				includes the enclosing brackets. NumComponents
//				is always 0.
// TCL_TOKEN_VARIABLE -		The token describes a variable substitution,
//				including the dollar sign, variable name, and
//				array index (if there is one) up through the
//				right parentheses. NumComponents tells how
//				many additional tokens follow to represent the
//				variable name. The first token will be a
//				TCL_TOKEN_TEXT token that describes the
//				variable name. If the variable is an array
//				reference then there will be one or more
//				additional tokens, of type TCL_TOKEN_TEXT,
//				TCL_TOKEN_BS, TCL_TOKEN_COMMAND, and
//				TCL_TOKEN_VARIABLE, that describe the array
//				index; numComponents counts the total number
//				of nested tokens that make up the variable
//				reference, including sub-tokens of
//				TCL_TOKEN_VARIABLE tokens.
// TCL_TOKEN_SUB_EXPR -		The token describes one subexpression of an
//				expression, from the first non-blank character
//				of the subexpression up to but not including
//				the space, brace, or bracket that terminates
//				the subexpression. NumComponents counts the
//				total number of following subtokens that make
//				up the subexpression; this includes all
//				subtokens for any nested TCL_TOKEN_SUB_EXPR
//				tokens. For example, a numeric value used as a
//				primitive operand is described by a
//				TCL_TOKEN_SUB_EXPR token followed by a
//				TCL_TOKEN_TEXT token. A binary subexpression
//				is described by a TCL_TOKEN_SUB_EXPR token
//				followed by the TCL_TOKEN_OPERATOR token for
//				the operator, then TCL_TOKEN_SUB_EXPR tokens
//				for the left then the right operands.
// TCL_TOKEN_OPERATOR -		The token describes one expression operator.
//				An operator might be the name of a math
//				function such as "abs". A TCL_TOKEN_OPERATOR
//				token is always preceded by one
//				TCL_TOKEN_SUB_EXPR token for the operator's
//				subexpression, and is followed by zero or more
//				TCL_TOKEN_SUB_EXPR tokens for the operator's
//				operands. NumComponents is always 0.
// TCL_TOKEN_EXPAND_WORD -	This token is just like TCL_TOKEN_WORD except
//				that it marks a word that began with the
//				literal character prefix "{*}". This word is
//				marked to be expanded - that is, broken into
//				words after substitution is complete.

// Parsing error types. On any parsing error, one of these values will be
// stored in the error field of the Tcl_Parse structure defined below.

// A structure of the following type is filled in by Tcl_ParseCommand. It
// describes a single command parsed from an input string.

type Tcl_Parse = Tcl_Parse1 /* tcl.h:2083:3 */

//----------------------------------------------------------------------------
// The following structure represents a user-defined encoding. It collects
// together all the functions that are used by the specific encoding.

type Tcl_EncodingType1 = struct {
	encodingName uintptr
	toUtfProc    uintptr
	fromUtfProc  uintptr
	freeProc     uintptr
	clientData   ClientData
	nullSize     int32
} /* tcl.h:2091:9 */

//----------------------------------------------------------------------------
// The following structure represents a user-defined encoding. It collects
// together all the functions that are used by the specific encoding.

type Tcl_EncodingType = Tcl_EncodingType1 /* tcl.h:2111:3 */

// The following definitions are used as values for the conversion control
// flags argument when converting text from one character set to another:
//
// TCL_ENCODING_START -		Signifies that the source buffer is the first
//				block in a (potentially multi-block) input
//				stream. Tells the conversion function to reset
//				to an initial state and perform any
//				initialization that needs to occur before the
//				first byte is converted. If the source buffer
//				contains the entire input stream to be
//				converted, this flag should be set.
// TCL_ENCODING_END -		Signifies that the source buffer is the last
//				block in a (potentially multi-block) input
//				stream. Tells the conversion routine to
//				perform any finalization that needs to occur
//				after the last byte is converted and then to
//				reset to an initial state. If the source
//				buffer contains the entire input stream to be
//				converted, this flag should be set.
// TCL_ENCODING_STOPONERROR -	If set, then the converter will return
//				immediately upon encountering an invalid byte
//				sequence or a source character that has no
//				mapping in the target encoding. If clear, then
//				the converter will skip the problem,
//				substituting one or more "close" characters in
//				the destination buffer and then continue to
//				convert the source.
// TCL_ENCODING_NO_TERMINATE - 	If set, Tcl_ExternalToUtf will not append a
//				terminating NUL byte.  Knowing that it will
//				not need space to do so, it will fill all
//				dstLen bytes with encoded UTF-8 content, as
//				other circumstances permit.  If clear, the
//				default behavior is to reserve a byte in
//				the dst space for NUL termination, and to
//				append the NUL byte.
// TCL_ENCODING_CHAR_LIMIT -	If set and dstCharsPtr is not NULL, then
//				Tcl_ExternalToUtf takes the initial value
//				of *dstCharsPtr is taken as a limit of the
//				maximum number of chars to produce in the
//				encoded UTF-8 content.  Otherwise, the
//				number of chars produced is controlled only
//				by other limiting factors.

// The following definitions are the error codes returned by the conversion
// routines:
//
// TCL_OK -			All characters were converted.
// TCL_CONVERT_NOSPACE -	The output buffer would not have been large
//				enough for all of the converted data; as many
//				characters as could fit were converted though.
// TCL_CONVERT_MULTIBYTE -	The last few bytes in the source string were
//				the beginning of a multibyte sequence, but
//				more bytes were needed to complete this
//				sequence. A subsequent call to the conversion
//				routine should pass the beginning of this
//				unconverted sequence plus additional bytes
//				from the source stream to properly convert the
//				formerly split-up multibyte sequence.
// TCL_CONVERT_SYNTAX -		The source stream contained an invalid
//				character sequence. This may occur if the
//				input stream has been damaged or if the input
//				encoding method was misidentified. This error
//				is reported only if TCL_ENCODING_STOPONERROR
//				was specified.
// TCL_CONVERT_UNKNOWN -	The source string contained a character that
//				could not be represented in the target
//				encoding. This error is reported only if
//				TCL_ENCODING_STOPONERROR was specified.

// The maximum number of bytes that are necessary to represent a single
// Unicode character in UTF-8. The valid values should be 3, 4 or 6
// (or perhaps 1 if we want to support a non-unicode enabled core). If 3 or
// 4, then Tcl_UniChar must be 2-bytes in size (UCS-2) (the default). If 6,
// then Tcl_UniChar must be 4-bytes in size (UCS-4). At this time UCS-2 mode
// is the default and recommended mode. UCS-4 is experimental and not
// recommended. It works for the core, but most extensions expect UCS-2.

// This represents a Unicode character. Any changes to this should also be
// reflected in regcustom.h.

type Tcl_UniChar = uint16 /* tcl.h:2228:24 */

//----------------------------------------------------------------------------
// TIP #59: The following structure is used in calls 'Tcl_RegisterConfig' to
// provide the system with the embedded configuration data.

type Tcl_Config1 = struct {
	key   uintptr
	value uintptr
} /* tcl.h:2237:9 */

//----------------------------------------------------------------------------
// TIP #59: The following structure is used in calls 'Tcl_RegisterConfig' to
// provide the system with the embedded configuration data.

type Tcl_Config = Tcl_Config1 /* tcl.h:2242:3 */

//----------------------------------------------------------------------------
// Override definitions for libtommath.

type mp_int1 = struct {
	used  int32
	alloc int32
	sign  mp_sign
	dp    uintptr
} /* tcl.h:2266:9 */

//----------------------------------------------------------------------------
// Override definitions for libtommath.

type mp_int = mp_int1  /* tcl.h:2266:23 */
type mp_digit = uint32 /* tcl.h:2268:22 */

//----------------------------------------------------------------------------
// Definitions needed for Tcl_ParseArgvObj routines.
// Based on tkArgv.c.
// Modifications from the original are copyright (c) Sam Bromley 2006

type Tcl_ArgvInfo = struct {
	__type     int32
	keyStr     uintptr
	srcPtr     uintptr
	dstPtr     uintptr
	helpStr    uintptr
	clientData ClientData
} /* tcl.h:2289:3 */

type TclPlatStubs1 = struct {
	magic             int32
	hooks             uintptr
	tcl_WinUtfToTChar uintptr
	tcl_WinTCharToUtf uintptr
} /* tclDecls.h:1840:11 */

type TclIntStubs1 = struct {
	magic                        int32
	hooks                        uintptr
	reserved0                    uintptr
	reserved1                    uintptr
	reserved2                    uintptr
	tclAllocateFreeObjects       uintptr
	reserved4                    uintptr
	tclCleanupChildren           uintptr
	tclCleanupCommand            uintptr
	tclCopyAndCollapse           uintptr
	tclCopyChannelOld            uintptr
	tclCreatePipeline            uintptr
	tclCreateProc                uintptr
	tclDeleteCompiledLocalVars   uintptr
	tclDeleteVars                uintptr
	reserved13                   uintptr
	tclDumpMemoryInfo            uintptr
	reserved15                   uintptr
	tclExprFloatError            uintptr
	reserved17                   uintptr
	reserved18                   uintptr
	reserved19                   uintptr
	reserved20                   uintptr
	reserved21                   uintptr
	tclFindElement               uintptr
	tclFindProc                  uintptr
	tclFormatInt                 uintptr
	tclFreePackageInfo           uintptr
	reserved26                   uintptr
	reserved27                   uintptr
	tclpGetDefaultStdChannel     uintptr
	reserved29                   uintptr
	reserved30                   uintptr
	tclGetExtension              uintptr
	tclGetFrame                  uintptr
	reserved33                   uintptr
	tclGetIntForIndex            uintptr
	reserved35                   uintptr
	reserved36                   uintptr
	tclGetLoadedPackages         uintptr
	tclGetNamespaceForQualName   uintptr
	tclGetObjInterpProc          uintptr
	tclGetOpenMode               uintptr
	tclGetOriginalCommand        uintptr
	tclpGetUserHome              uintptr
	reserved43                   uintptr
	tclGuessPackageName          uintptr
	tclHideUnsafeCommands        uintptr
	tclInExit                    uintptr
	reserved47                   uintptr
	reserved48                   uintptr
	reserved49                   uintptr
	tclInitCompiledLocals        uintptr
	tclInterpInit                uintptr
	reserved52                   uintptr
	tclInvokeObjectCommand       uintptr
	tclInvokeStringCommand       uintptr
	tclIsProc                    uintptr
	reserved56                   uintptr
	reserved57                   uintptr
	tclLookupVar                 uintptr
	reserved59                   uintptr
	tclNeedSpace                 uintptr
	tclNewProcBodyObj            uintptr
	tclObjCommandComplete        uintptr
	tclObjInterpProc             uintptr
	tclObjInvoke                 uintptr
	reserved65                   uintptr
	reserved66                   uintptr
	reserved67                   uintptr
	reserved68                   uintptr
	tclpAlloc                    uintptr
	reserved70                   uintptr
	reserved71                   uintptr
	reserved72                   uintptr
	reserved73                   uintptr
	tclpFree                     uintptr
	tclpGetClicks                uintptr
	tclpGetSeconds               uintptr
	tclpGetTime                  uintptr
	reserved78                   uintptr
	reserved79                   uintptr
	reserved80                   uintptr
	tclpRealloc                  uintptr
	reserved82                   uintptr
	reserved83                   uintptr
	reserved84                   uintptr
	reserved85                   uintptr
	reserved86                   uintptr
	reserved87                   uintptr
	tclPrecTraceProc             uintptr
	tclPreventAliasLoop          uintptr
	reserved90                   uintptr
	tclProcCleanupProc           uintptr
	tclProcCompileProc           uintptr
	tclProcDeleteProc            uintptr
	reserved94                   uintptr
	reserved95                   uintptr
	tclRenameCommand             uintptr
	tclResetShadowedCmdRefs      uintptr
	tclServiceIdle               uintptr
	reserved99                   uintptr
	reserved100                  uintptr
	tclSetPreInitScript          uintptr
	tclSetupEnv                  uintptr
	tclSockGetPort               uintptr
	tclSockMinimumBuffersOld     uintptr
	reserved105                  uintptr
	reserved106                  uintptr
	reserved107                  uintptr
	tclTeardownNamespace         uintptr
	tclUpdateReturnInfo          uintptr
	tclSockMinimumBuffers        uintptr
	tcl_AddInterpResolvers       uintptr
	tcl_AppendExportList         uintptr
	tcl_CreateNamespace          uintptr
	tcl_DeleteNamespace          uintptr
	tcl_Export                   uintptr
	tcl_FindCommand              uintptr
	tcl_FindNamespace            uintptr
	tcl_GetInterpResolvers       uintptr
	tcl_GetNamespaceResolvers    uintptr
	tcl_FindNamespaceVar         uintptr
	tcl_ForgetImport             uintptr
	tcl_GetCommandFromObj        uintptr
	tcl_GetCommandFullName       uintptr
	tcl_GetCurrentNamespace      uintptr
	tcl_GetGlobalNamespace       uintptr
	tcl_GetVariableFullName      uintptr
	tcl_Import                   uintptr
	tcl_PopCallFrame             uintptr
	tcl_PushCallFrame            uintptr
	tcl_RemoveInterpResolvers    uintptr
	tcl_SetNamespaceResolvers    uintptr
	tclpHasSockets               uintptr
	tclpGetDate                  uintptr
	reserved134                  uintptr
	reserved135                  uintptr
	reserved136                  uintptr
	reserved137                  uintptr
	tclGetEnv                    uintptr
	reserved139                  uintptr
	reserved140                  uintptr
	tclpGetCwd                   uintptr
	tclSetByteCodeFromAny        uintptr
	tclAddLiteralObj             uintptr
	tclHideLiteral               uintptr
	tclGetAuxDataType            uintptr
	tclHandleCreate              uintptr
	tclHandleFree                uintptr
	tclHandlePreserve            uintptr
	tclHandleRelease             uintptr
	tclRegAbout                  uintptr
	tclRegExpRangeUniChar        uintptr
	tclSetLibraryPath            uintptr
	tclGetLibraryPath            uintptr
	reserved154                  uintptr
	reserved155                  uintptr
	tclRegError                  uintptr
	tclVarTraceExists            uintptr
	tclSetStartupScriptFileName  uintptr
	tclGetStartupScriptFileName  uintptr
	reserved160                  uintptr
	tclChannelTransform          uintptr
	tclChannelEventScriptInvoker uintptr
	tclGetInstructionTable       uintptr
	tclExpandCodeArray           uintptr
	tclpSetInitialEncodings      uintptr
	tclListObjSetElement         uintptr
	tclSetStartupScriptPath      uintptr
	tclGetStartupScriptPath      uintptr
	tclpUtfNcmp2                 uintptr
	tclCheckInterpTraces         uintptr
	tclCheckExecutionTraces      uintptr
	tclInThreadExit              uintptr
	tclUniCharMatch              uintptr
	reserved174                  uintptr
	tclCallVarTraces             uintptr
	tclCleanupVar                uintptr
	tclVarErrMsg                 uintptr
	tcl_SetStartupScript         uintptr
	tcl_GetStartupScript         uintptr
	reserved180                  uintptr
	reserved181                  uintptr
	tclpLocaltime                uintptr
	tclpGmtime                   uintptr
	reserved184                  uintptr
	reserved185                  uintptr
	reserved186                  uintptr
	reserved187                  uintptr
	reserved188                  uintptr
	reserved189                  uintptr
	reserved190                  uintptr
	reserved191                  uintptr
	reserved192                  uintptr
	reserved193                  uintptr
	reserved194                  uintptr
	reserved195                  uintptr
	reserved196                  uintptr
	reserved197                  uintptr
	tclObjGetFrame               uintptr
	reserved199                  uintptr
	tclpObjRemoveDirectory       uintptr
	tclpObjCopyDirectory         uintptr
	tclpObjCreateDirectory       uintptr
	tclpObjDeleteFile            uintptr
	tclpObjCopyFile              uintptr
	tclpObjRenameFile            uintptr
	tclpObjStat                  uintptr
	tclpObjAccess                uintptr
	tclpOpenFileChannel          uintptr
	reserved209                  uintptr
	reserved210                  uintptr
	reserved211                  uintptr
	tclpFindExecutable           uintptr
	tclGetObjNameOfExecutable    uintptr
	tclSetObjNameOfExecutable    uintptr
	tclStackAlloc                uintptr
	tclStackFree                 uintptr
	tclPushStackFrame            uintptr
	tclPopStackFrame             uintptr
	reserved219                  uintptr
	reserved220                  uintptr
	reserved221                  uintptr
	reserved222                  uintptr
	reserved223                  uintptr
	tclGetPlatform               uintptr
	tclTraceDictPath             uintptr
	tclObjBeingDeleted           uintptr
	tclSetNsPath                 uintptr
	reserved228                  uintptr
	tclPtrMakeUpvar              uintptr
	tclObjLookupVar              uintptr
	tclGetNamespaceFromObj       uintptr
	tclEvalObjEx                 uintptr
	tclGetSrcInfoForPc           uintptr
	tclVarHashCreateVar          uintptr
	tclInitVarHashTable          uintptr
	tclBackgroundException       uintptr
	tclResetCancellation         uintptr
	tclNRInterpProc              uintptr
	tclNRInterpProcCore          uintptr
	tclNRRunCallbacks            uintptr
	tclNREvalObjEx               uintptr
	tclNREvalObjv                uintptr
	tclDbDumpActiveObjects       uintptr
	tclGetNamespaceChildTable    uintptr
	tclGetNamespaceCommandTable  uintptr
	tclInitRewriteEnsemble       uintptr
	tclResetRewriteEnsemble      uintptr
	tclCopyChannel               uintptr
	tclDoubleDigits              uintptr
	tclSetSlaveCancelFlags       uintptr
	tclRegisterLiteral           uintptr
	tclPtrGetVar                 uintptr
	tclPtrSetVar                 uintptr
	tclPtrIncrObjVar             uintptr
	tclPtrObjMakeUpvar           uintptr
	tclPtrUnsetVar               uintptr
	reserved257                  uintptr
	tclUnusedStubEntry           uintptr
} /* tclDecls.h:1841:11 */

type TclIntPlatStubs1 = struct {
	magic                    int32
	hooks                    uintptr
	tclWinConvertError       uintptr
	tclWinConvertWSAError    uintptr
	tclWinGetServByName      uintptr
	tclWinGetSockOpt         uintptr
	tclWinGetTclInstance     uintptr
	tclUnixWaitForFile       uintptr
	tclWinNToHS              uintptr
	tclWinSetSockOpt         uintptr
	tclpGetPid               uintptr
	tclWinGetPlatformId      uintptr
	tclpReaddir              uintptr
	tclGetAndDetachPids      uintptr
	tclpCloseFile            uintptr
	tclpCreateCommandChannel uintptr
	tclpCreatePipe           uintptr
	tclpCreateProcess        uintptr
	tclpIsAtty               uintptr
	tclUnixCopyFile          uintptr
	tclpMakeFile             uintptr
	tclpOpenFile             uintptr
	tclWinAddProcess         uintptr
	tclpInetNtoa             uintptr
	tclpCreateTempFile       uintptr
	reserved23               uintptr
	tclWinNoBackslash        uintptr
	reserved25               uintptr
	tclWinSetInterfaces      uintptr
	tclWinFlushDirtyChannels uintptr
	tclWinResetInterfaces    uintptr
	tclWinCPUID              uintptr
	tclUnixOpenTemporaryFile uintptr
} /* tclDecls.h:1842:11 */

type TclStubHooks = struct {
	tclPlatStubs    uintptr
	tclIntStubs     uintptr
	tclIntPlatStubs uintptr
} /* tclDecls.h:1843:3 */

type TclStubs = struct {
	magic                                  int32
	hooks                                  uintptr
	tcl_PkgProvideEx                       uintptr
	tcl_PkgRequireEx                       uintptr
	tcl_Panic                              uintptr
	tcl_Alloc                              uintptr
	tcl_Free                               uintptr
	tcl_Realloc                            uintptr
	tcl_DbCkalloc                          uintptr
	tcl_DbCkfree                           uintptr
	tcl_DbCkrealloc                        uintptr
	reserved9                              uintptr
	reserved10                             uintptr
	tcl_SetTimer                           uintptr
	tcl_Sleep                              uintptr
	tcl_WaitForEvent                       uintptr
	tcl_AppendAllObjTypes                  uintptr
	tcl_AppendStringsToObj                 uintptr
	tcl_AppendToObj                        uintptr
	tcl_ConcatObj                          uintptr
	tcl_ConvertToType                      uintptr
	tcl_DbDecrRefCount                     uintptr
	tcl_DbIncrRefCount                     uintptr
	tcl_DbIsShared                         uintptr
	tcl_DbNewBooleanObj                    uintptr
	tcl_DbNewByteArrayObj                  uintptr
	tcl_DbNewDoubleObj                     uintptr
	tcl_DbNewListObj                       uintptr
	tcl_DbNewLongObj                       uintptr
	tcl_DbNewObj                           uintptr
	tcl_DbNewStringObj                     uintptr
	tcl_DuplicateObj                       uintptr
	tclFreeObj                             uintptr
	tcl_GetBoolean                         uintptr
	tcl_GetBooleanFromObj                  uintptr
	tcl_GetByteArrayFromObj                uintptr
	tcl_GetDouble                          uintptr
	tcl_GetDoubleFromObj                   uintptr
	tcl_GetIndexFromObj                    uintptr
	tcl_GetInt                             uintptr
	tcl_GetIntFromObj                      uintptr
	tcl_GetLongFromObj                     uintptr
	tcl_GetObjType                         uintptr
	tcl_GetStringFromObj                   uintptr
	tcl_InvalidateStringRep                uintptr
	tcl_ListObjAppendList                  uintptr
	tcl_ListObjAppendElement               uintptr
	tcl_ListObjGetElements                 uintptr
	tcl_ListObjIndex                       uintptr
	tcl_ListObjLength                      uintptr
	tcl_ListObjReplace                     uintptr
	tcl_NewBooleanObj                      uintptr
	tcl_NewByteArrayObj                    uintptr
	tcl_NewDoubleObj                       uintptr
	tcl_NewIntObj                          uintptr
	tcl_NewListObj                         uintptr
	tcl_NewLongObj                         uintptr
	tcl_NewObj                             uintptr
	tcl_NewStringObj                       uintptr
	tcl_SetBooleanObj                      uintptr
	tcl_SetByteArrayLength                 uintptr
	tcl_SetByteArrayObj                    uintptr
	tcl_SetDoubleObj                       uintptr
	tcl_SetIntObj                          uintptr
	tcl_SetListObj                         uintptr
	tcl_SetLongObj                         uintptr
	tcl_SetObjLength                       uintptr
	tcl_SetStringObj                       uintptr
	tcl_AddErrorInfo                       uintptr
	tcl_AddObjErrorInfo                    uintptr
	tcl_AllowExceptions                    uintptr
	tcl_AppendElement                      uintptr
	tcl_AppendResult                       uintptr
	tcl_AsyncCreate                        uintptr
	tcl_AsyncDelete                        uintptr
	tcl_AsyncInvoke                        uintptr
	tcl_AsyncMark                          uintptr
	tcl_AsyncReady                         uintptr
	tcl_BackgroundError                    uintptr
	tcl_Backslash                          uintptr
	tcl_BadChannelOption                   uintptr
	tcl_CallWhenDeleted                    uintptr
	tcl_CancelIdleCall                     uintptr
	tcl_Close                              uintptr
	tcl_CommandComplete                    uintptr
	tcl_Concat                             uintptr
	tcl_ConvertElement                     uintptr
	tcl_ConvertCountedElement              uintptr
	tcl_CreateAlias                        uintptr
	tcl_CreateAliasObj                     uintptr
	tcl_CreateChannel                      uintptr
	tcl_CreateChannelHandler               uintptr
	tcl_CreateCloseHandler                 uintptr
	tcl_CreateCommand                      uintptr
	tcl_CreateEventSource                  uintptr
	tcl_CreateExitHandler                  uintptr
	tcl_CreateInterp                       uintptr
	tcl_CreateMathFunc                     uintptr
	tcl_CreateObjCommand                   uintptr
	tcl_CreateSlave                        uintptr
	tcl_CreateTimerHandler                 uintptr
	tcl_CreateTrace                        uintptr
	tcl_DeleteAssocData                    uintptr
	tcl_DeleteChannelHandler               uintptr
	tcl_DeleteCloseHandler                 uintptr
	tcl_DeleteCommand                      uintptr
	tcl_DeleteCommandFromToken             uintptr
	tcl_DeleteEvents                       uintptr
	tcl_DeleteEventSource                  uintptr
	tcl_DeleteExitHandler                  uintptr
	tcl_DeleteHashEntry                    uintptr
	tcl_DeleteHashTable                    uintptr
	tcl_DeleteInterp                       uintptr
	tcl_DetachPids                         uintptr
	tcl_DeleteTimerHandler                 uintptr
	tcl_DeleteTrace                        uintptr
	tcl_DontCallWhenDeleted                uintptr
	tcl_DoOneEvent                         uintptr
	tcl_DoWhenIdle                         uintptr
	tcl_DStringAppend                      uintptr
	tcl_DStringAppendElement               uintptr
	tcl_DStringEndSublist                  uintptr
	tcl_DStringFree                        uintptr
	tcl_DStringGetResult                   uintptr
	tcl_DStringInit                        uintptr
	tcl_DStringResult                      uintptr
	tcl_DStringSetLength                   uintptr
	tcl_DStringStartSublist                uintptr
	tcl_Eof                                uintptr
	tcl_ErrnoId                            uintptr
	tcl_ErrnoMsg                           uintptr
	tcl_Eval                               uintptr
	tcl_EvalFile                           uintptr
	tcl_EvalObj                            uintptr
	tcl_EventuallyFree                     uintptr
	tcl_Exit                               uintptr
	tcl_ExposeCommand                      uintptr
	tcl_ExprBoolean                        uintptr
	tcl_ExprBooleanObj                     uintptr
	tcl_ExprDouble                         uintptr
	tcl_ExprDoubleObj                      uintptr
	tcl_ExprLong                           uintptr
	tcl_ExprLongObj                        uintptr
	tcl_ExprObj                            uintptr
	tcl_ExprString                         uintptr
	tcl_Finalize                           uintptr
	tcl_FindExecutable                     uintptr
	tcl_FirstHashEntry                     uintptr
	tcl_Flush                              uintptr
	tcl_FreeResult                         uintptr
	tcl_GetAlias                           uintptr
	tcl_GetAliasObj                        uintptr
	tcl_GetAssocData                       uintptr
	tcl_GetChannel                         uintptr
	tcl_GetChannelBufferSize               uintptr
	tcl_GetChannelHandle                   uintptr
	tcl_GetChannelInstanceData             uintptr
	tcl_GetChannelMode                     uintptr
	tcl_GetChannelName                     uintptr
	tcl_GetChannelOption                   uintptr
	tcl_GetChannelType                     uintptr
	tcl_GetCommandInfo                     uintptr
	tcl_GetCommandName                     uintptr
	tcl_GetErrno                           uintptr
	tcl_GetHostName                        uintptr
	tcl_GetInterpPath                      uintptr
	tcl_GetMaster                          uintptr
	tcl_GetNameOfExecutable                uintptr
	tcl_GetObjResult                       uintptr
	reserved167                            uintptr
	tcl_GetPathType                        uintptr
	tcl_Gets                               uintptr
	tcl_GetsObj                            uintptr
	tcl_GetServiceMode                     uintptr
	tcl_GetSlave                           uintptr
	tcl_GetStdChannel                      uintptr
	tcl_GetStringResult                    uintptr
	tcl_GetVar                             uintptr
	tcl_GetVar2                            uintptr
	tcl_GlobalEval                         uintptr
	tcl_GlobalEvalObj                      uintptr
	tcl_HideCommand                        uintptr
	tcl_Init                               uintptr
	tcl_InitHashTable                      uintptr
	tcl_InputBlocked                       uintptr
	tcl_InputBuffered                      uintptr
	tcl_InterpDeleted                      uintptr
	tcl_IsSafe                             uintptr
	tcl_JoinPath                           uintptr
	tcl_LinkVar                            uintptr
	reserved188                            uintptr
	tcl_MakeFileChannel                    uintptr
	tcl_MakeSafe                           uintptr
	tcl_MakeTcpClientChannel               uintptr
	tcl_Merge                              uintptr
	tcl_NextHashEntry                      uintptr
	tcl_NotifyChannel                      uintptr
	tcl_ObjGetVar2                         uintptr
	tcl_ObjSetVar2                         uintptr
	tcl_OpenCommandChannel                 uintptr
	tcl_OpenFileChannel                    uintptr
	tcl_OpenTcpClient                      uintptr
	tcl_OpenTcpServer                      uintptr
	tcl_Preserve                           uintptr
	tcl_PrintDouble                        uintptr
	tcl_PutEnv                             uintptr
	tcl_PosixError                         uintptr
	tcl_QueueEvent                         uintptr
	tcl_Read                               uintptr
	tcl_ReapDetachedProcs                  uintptr
	tcl_RecordAndEval                      uintptr
	tcl_RecordAndEvalObj                   uintptr
	tcl_RegisterChannel                    uintptr
	tcl_RegisterObjType                    uintptr
	tcl_RegExpCompile                      uintptr
	tcl_RegExpExec                         uintptr
	tcl_RegExpMatch                        uintptr
	tcl_RegExpRange                        uintptr
	tcl_Release                            uintptr
	tcl_ResetResult                        uintptr
	tcl_ScanElement                        uintptr
	tcl_ScanCountedElement                 uintptr
	tcl_SeekOld                            uintptr
	tcl_ServiceAll                         uintptr
	tcl_ServiceEvent                       uintptr
	tcl_SetAssocData                       uintptr
	tcl_SetChannelBufferSize               uintptr
	tcl_SetChannelOption                   uintptr
	tcl_SetCommandInfo                     uintptr
	tcl_SetErrno                           uintptr
	tcl_SetErrorCode                       uintptr
	tcl_SetMaxBlockTime                    uintptr
	tcl_SetPanicProc                       uintptr
	tcl_SetRecursionLimit                  uintptr
	tcl_SetResult                          uintptr
	tcl_SetServiceMode                     uintptr
	tcl_SetObjErrorCode                    uintptr
	tcl_SetObjResult                       uintptr
	tcl_SetStdChannel                      uintptr
	tcl_SetVar                             uintptr
	tcl_SetVar2                            uintptr
	tcl_SignalId                           uintptr
	tcl_SignalMsg                          uintptr
	tcl_SourceRCFile                       uintptr
	tcl_SplitList                          uintptr
	tcl_SplitPath                          uintptr
	tcl_StaticPackage                      uintptr
	tcl_StringMatch                        uintptr
	tcl_TellOld                            uintptr
	tcl_TraceVar                           uintptr
	tcl_TraceVar2                          uintptr
	tcl_TranslateFileName                  uintptr
	tcl_Ungets                             uintptr
	tcl_UnlinkVar                          uintptr
	tcl_UnregisterChannel                  uintptr
	tcl_UnsetVar                           uintptr
	tcl_UnsetVar2                          uintptr
	tcl_UntraceVar                         uintptr
	tcl_UntraceVar2                        uintptr
	tcl_UpdateLinkedVar                    uintptr
	tcl_UpVar                              uintptr
	tcl_UpVar2                             uintptr
	tcl_VarEval                            uintptr
	tcl_VarTraceInfo                       uintptr
	tcl_VarTraceInfo2                      uintptr
	tcl_Write                              uintptr
	tcl_WrongNumArgs                       uintptr
	tcl_DumpActiveMemory                   uintptr
	tcl_ValidateAllMemory                  uintptr
	tcl_AppendResultVA                     uintptr
	tcl_AppendStringsToObjVA               uintptr
	tcl_HashStats                          uintptr
	tcl_ParseVar                           uintptr
	tcl_PkgPresent                         uintptr
	tcl_PkgPresentEx                       uintptr
	tcl_PkgProvide                         uintptr
	tcl_PkgRequire                         uintptr
	tcl_SetErrorCodeVA                     uintptr
	tcl_VarEvalVA                          uintptr
	tcl_WaitPid                            uintptr
	tcl_PanicVA                            uintptr
	tcl_GetVersion                         uintptr
	tcl_InitMemory                         uintptr
	tcl_StackChannel                       uintptr
	tcl_UnstackChannel                     uintptr
	tcl_GetStackedChannel                  uintptr
	tcl_SetMainLoop                        uintptr
	reserved285                            uintptr
	tcl_AppendObjToObj                     uintptr
	tcl_CreateEncoding                     uintptr
	tcl_CreateThreadExitHandler            uintptr
	tcl_DeleteThreadExitHandler            uintptr
	tcl_DiscardResult                      uintptr
	tcl_EvalEx                             uintptr
	tcl_EvalObjv                           uintptr
	tcl_EvalObjEx                          uintptr
	tcl_ExitThread                         uintptr
	tcl_ExternalToUtf                      uintptr
	tcl_ExternalToUtfDString               uintptr
	tcl_FinalizeThread                     uintptr
	tcl_FinalizeNotifier                   uintptr
	tcl_FreeEncoding                       uintptr
	tcl_GetCurrentThread                   uintptr
	tcl_GetEncoding                        uintptr
	tcl_GetEncodingName                    uintptr
	tcl_GetEncodingNames                   uintptr
	tcl_GetIndexFromObjStruct              uintptr
	tcl_GetThreadData                      uintptr
	tcl_GetVar2Ex                          uintptr
	tcl_InitNotifier                       uintptr
	tcl_MutexLock                          uintptr
	tcl_MutexUnlock                        uintptr
	tcl_ConditionNotify                    uintptr
	tcl_ConditionWait                      uintptr
	tcl_NumUtfChars                        uintptr
	tcl_ReadChars                          uintptr
	tcl_RestoreResult                      uintptr
	tcl_SaveResult                         uintptr
	tcl_SetSystemEncoding                  uintptr
	tcl_SetVar2Ex                          uintptr
	tcl_ThreadAlert                        uintptr
	tcl_ThreadQueueEvent                   uintptr
	tcl_UniCharAtIndex                     uintptr
	tcl_UniCharToLower                     uintptr
	tcl_UniCharToTitle                     uintptr
	tcl_UniCharToUpper                     uintptr
	tcl_UniCharToUtf                       uintptr
	tcl_UtfAtIndex                         uintptr
	tcl_UtfCharComplete                    uintptr
	tcl_UtfBackslash                       uintptr
	tcl_UtfFindFirst                       uintptr
	tcl_UtfFindLast                        uintptr
	tcl_UtfNext                            uintptr
	tcl_UtfPrev                            uintptr
	tcl_UtfToExternal                      uintptr
	tcl_UtfToExternalDString               uintptr
	tcl_UtfToLower                         uintptr
	tcl_UtfToTitle                         uintptr
	tcl_UtfToUniChar                       uintptr
	tcl_UtfToUpper                         uintptr
	tcl_WriteChars                         uintptr
	tcl_WriteObj                           uintptr
	tcl_GetString                          uintptr
	tcl_GetDefaultEncodingDir              uintptr
	tcl_SetDefaultEncodingDir              uintptr
	tcl_AlertNotifier                      uintptr
	tcl_ServiceModeHook                    uintptr
	tcl_UniCharIsAlnum                     uintptr
	tcl_UniCharIsAlpha                     uintptr
	tcl_UniCharIsDigit                     uintptr
	tcl_UniCharIsLower                     uintptr
	tcl_UniCharIsSpace                     uintptr
	tcl_UniCharIsUpper                     uintptr
	tcl_UniCharIsWordChar                  uintptr
	tcl_UniCharLen                         uintptr
	tcl_UniCharNcmp                        uintptr
	tcl_UniCharToUtfDString                uintptr
	tcl_UtfToUniCharDString                uintptr
	tcl_GetRegExpFromObj                   uintptr
	tcl_EvalTokens                         uintptr
	tcl_FreeParse                          uintptr
	tcl_LogCommandInfo                     uintptr
	tcl_ParseBraces                        uintptr
	tcl_ParseCommand                       uintptr
	tcl_ParseExpr                          uintptr
	tcl_ParseQuotedString                  uintptr
	tcl_ParseVarName                       uintptr
	tcl_GetCwd                             uintptr
	tcl_Chdir                              uintptr
	tcl_Access                             uintptr
	tcl_Stat                               uintptr
	tcl_UtfNcmp                            uintptr
	tcl_UtfNcasecmp                        uintptr
	tcl_StringCaseMatch                    uintptr
	tcl_UniCharIsControl                   uintptr
	tcl_UniCharIsGraph                     uintptr
	tcl_UniCharIsPrint                     uintptr
	tcl_UniCharIsPunct                     uintptr
	tcl_RegExpExecObj                      uintptr
	tcl_RegExpGetInfo                      uintptr
	tcl_NewUnicodeObj                      uintptr
	tcl_SetUnicodeObj                      uintptr
	tcl_GetCharLength                      uintptr
	tcl_GetUniChar                         uintptr
	tcl_GetUnicode                         uintptr
	tcl_GetRange                           uintptr
	tcl_AppendUnicodeToObj                 uintptr
	tcl_RegExpMatchObj                     uintptr
	tcl_SetNotifier                        uintptr
	tcl_GetAllocMutex                      uintptr
	tcl_GetChannelNames                    uintptr
	tcl_GetChannelNamesEx                  uintptr
	tcl_ProcObjCmd                         uintptr
	tcl_ConditionFinalize                  uintptr
	tcl_MutexFinalize                      uintptr
	tcl_CreateThread                       uintptr
	tcl_ReadRaw                            uintptr
	tcl_WriteRaw                           uintptr
	tcl_GetTopChannel                      uintptr
	tcl_ChannelBuffered                    uintptr
	tcl_ChannelName                        uintptr
	tcl_ChannelVersion                     uintptr
	tcl_ChannelBlockModeProc               uintptr
	tcl_ChannelCloseProc                   uintptr
	tcl_ChannelClose2Proc                  uintptr
	tcl_ChannelInputProc                   uintptr
	tcl_ChannelOutputProc                  uintptr
	tcl_ChannelSeekProc                    uintptr
	tcl_ChannelSetOptionProc               uintptr
	tcl_ChannelGetOptionProc               uintptr
	tcl_ChannelWatchProc                   uintptr
	tcl_ChannelGetHandleProc               uintptr
	tcl_ChannelFlushProc                   uintptr
	tcl_ChannelHandlerProc                 uintptr
	tcl_JoinThread                         uintptr
	tcl_IsChannelShared                    uintptr
	tcl_IsChannelRegistered                uintptr
	tcl_CutChannel                         uintptr
	tcl_SpliceChannel                      uintptr
	tcl_ClearChannelHandlers               uintptr
	tcl_IsChannelExisting                  uintptr
	tcl_UniCharNcasecmp                    uintptr
	tcl_UniCharCaseMatch                   uintptr
	tcl_FindHashEntry                      uintptr
	tcl_CreateHashEntry                    uintptr
	tcl_InitCustomHashTable                uintptr
	tcl_InitObjHashTable                   uintptr
	tcl_CommandTraceInfo                   uintptr
	tcl_TraceCommand                       uintptr
	tcl_UntraceCommand                     uintptr
	tcl_AttemptAlloc                       uintptr
	tcl_AttemptDbCkalloc                   uintptr
	tcl_AttemptRealloc                     uintptr
	tcl_AttemptDbCkrealloc                 uintptr
	tcl_AttemptSetObjLength                uintptr
	tcl_GetChannelThread                   uintptr
	tcl_GetUnicodeFromObj                  uintptr
	tcl_GetMathFuncInfo                    uintptr
	tcl_ListMathFuncs                      uintptr
	tcl_SubstObj                           uintptr
	tcl_DetachChannel                      uintptr
	tcl_IsStandardChannel                  uintptr
	tcl_FSCopyFile                         uintptr
	tcl_FSCopyDirectory                    uintptr
	tcl_FSCreateDirectory                  uintptr
	tcl_FSDeleteFile                       uintptr
	tcl_FSLoadFile                         uintptr
	tcl_FSMatchInDirectory                 uintptr
	tcl_FSLink                             uintptr
	tcl_FSRemoveDirectory                  uintptr
	tcl_FSRenameFile                       uintptr
	tcl_FSLstat                            uintptr
	tcl_FSUtime                            uintptr
	tcl_FSFileAttrsGet                     uintptr
	tcl_FSFileAttrsSet                     uintptr
	tcl_FSFileAttrStrings                  uintptr
	tcl_FSStat                             uintptr
	tcl_FSAccess                           uintptr
	tcl_FSOpenFileChannel                  uintptr
	tcl_FSGetCwd                           uintptr
	tcl_FSChdir                            uintptr
	tcl_FSConvertToPathType                uintptr
	tcl_FSJoinPath                         uintptr
	tcl_FSSplitPath                        uintptr
	tcl_FSEqualPaths                       uintptr
	tcl_FSGetNormalizedPath                uintptr
	tcl_FSJoinToPath                       uintptr
	tcl_FSGetInternalRep                   uintptr
	tcl_FSGetTranslatedPath                uintptr
	tcl_FSEvalFile                         uintptr
	tcl_FSNewNativePath                    uintptr
	tcl_FSGetNativePath                    uintptr
	tcl_FSFileSystemInfo                   uintptr
	tcl_FSPathSeparator                    uintptr
	tcl_FSListVolumes                      uintptr
	tcl_FSRegister                         uintptr
	tcl_FSUnregister                       uintptr
	tcl_FSData                             uintptr
	tcl_FSGetTranslatedStringPath          uintptr
	tcl_FSGetFileSystemForPath             uintptr
	tcl_FSGetPathType                      uintptr
	tcl_OutputBuffered                     uintptr
	tcl_FSMountsChanged                    uintptr
	tcl_EvalTokensStandard                 uintptr
	tcl_GetTime                            uintptr
	tcl_CreateObjTrace                     uintptr
	tcl_GetCommandInfoFromToken            uintptr
	tcl_SetCommandInfoFromToken            uintptr
	tcl_DbNewWideIntObj                    uintptr
	tcl_GetWideIntFromObj                  uintptr
	tcl_NewWideIntObj                      uintptr
	tcl_SetWideIntObj                      uintptr
	tcl_AllocStatBuf                       uintptr
	tcl_Seek                               uintptr
	tcl_Tell                               uintptr
	tcl_ChannelWideSeekProc                uintptr
	tcl_DictObjPut                         uintptr
	tcl_DictObjGet                         uintptr
	tcl_DictObjRemove                      uintptr
	tcl_DictObjSize                        uintptr
	tcl_DictObjFirst                       uintptr
	tcl_DictObjNext                        uintptr
	tcl_DictObjDone                        uintptr
	tcl_DictObjPutKeyList                  uintptr
	tcl_DictObjRemoveKeyList               uintptr
	tcl_NewDictObj                         uintptr
	tcl_DbNewDictObj                       uintptr
	tcl_RegisterConfig                     uintptr
	tcl_CreateNamespace                    uintptr
	tcl_DeleteNamespace                    uintptr
	tcl_AppendExportList                   uintptr
	tcl_Export                             uintptr
	tcl_Import                             uintptr
	tcl_ForgetImport                       uintptr
	tcl_GetCurrentNamespace                uintptr
	tcl_GetGlobalNamespace                 uintptr
	tcl_FindNamespace                      uintptr
	tcl_FindCommand                        uintptr
	tcl_GetCommandFromObj                  uintptr
	tcl_GetCommandFullName                 uintptr
	tcl_FSEvalFileEx                       uintptr
	tcl_SetExitProc                        uintptr
	tcl_LimitAddHandler                    uintptr
	tcl_LimitRemoveHandler                 uintptr
	tcl_LimitReady                         uintptr
	tcl_LimitCheck                         uintptr
	tcl_LimitExceeded                      uintptr
	tcl_LimitSetCommands                   uintptr
	tcl_LimitSetTime                       uintptr
	tcl_LimitSetGranularity                uintptr
	tcl_LimitTypeEnabled                   uintptr
	tcl_LimitTypeExceeded                  uintptr
	tcl_LimitTypeSet                       uintptr
	tcl_LimitTypeReset                     uintptr
	tcl_LimitGetCommands                   uintptr
	tcl_LimitGetTime                       uintptr
	tcl_LimitGetGranularity                uintptr
	tcl_SaveInterpState                    uintptr
	tcl_RestoreInterpState                 uintptr
	tcl_DiscardInterpState                 uintptr
	tcl_SetReturnOptions                   uintptr
	tcl_GetReturnOptions                   uintptr
	tcl_IsEnsemble                         uintptr
	tcl_CreateEnsemble                     uintptr
	tcl_FindEnsemble                       uintptr
	tcl_SetEnsembleSubcommandList          uintptr
	tcl_SetEnsembleMappingDict             uintptr
	tcl_SetEnsembleUnknownHandler          uintptr
	tcl_SetEnsembleFlags                   uintptr
	tcl_GetEnsembleSubcommandList          uintptr
	tcl_GetEnsembleMappingDict             uintptr
	tcl_GetEnsembleUnknownHandler          uintptr
	tcl_GetEnsembleFlags                   uintptr
	tcl_GetEnsembleNamespace               uintptr
	tcl_SetTimeProc                        uintptr
	tcl_QueryTimeProc                      uintptr
	tcl_ChannelThreadActionProc            uintptr
	tcl_NewBignumObj                       uintptr
	tcl_DbNewBignumObj                     uintptr
	tcl_SetBignumObj                       uintptr
	tcl_GetBignumFromObj                   uintptr
	tcl_TakeBignumFromObj                  uintptr
	tcl_TruncateChannel                    uintptr
	tcl_ChannelTruncateProc                uintptr
	tcl_SetChannelErrorInterp              uintptr
	tcl_GetChannelErrorInterp              uintptr
	tcl_SetChannelError                    uintptr
	tcl_GetChannelError                    uintptr
	tcl_InitBignumFromDouble               uintptr
	tcl_GetNamespaceUnknownHandler         uintptr
	tcl_SetNamespaceUnknownHandler         uintptr
	tcl_GetEncodingFromObj                 uintptr
	tcl_GetEncodingSearchPath              uintptr
	tcl_SetEncodingSearchPath              uintptr
	tcl_GetEncodingNameFromEnvironment     uintptr
	tcl_PkgRequireProc                     uintptr
	tcl_AppendObjToErrorInfo               uintptr
	tcl_AppendLimitedToObj                 uintptr
	tcl_Format                             uintptr
	tcl_AppendFormatToObj                  uintptr
	tcl_ObjPrintf                          uintptr
	tcl_AppendPrintfToObj                  uintptr
	tcl_CancelEval                         uintptr
	tcl_Canceled                           uintptr
	tcl_CreatePipe                         uintptr
	tcl_NRCreateCommand                    uintptr
	tcl_NREvalObj                          uintptr
	tcl_NREvalObjv                         uintptr
	tcl_NRCmdSwap                          uintptr
	tcl_NRAddCallback                      uintptr
	tcl_NRCallObjProc                      uintptr
	tcl_GetFSDeviceFromStat                uintptr
	tcl_GetFSInodeFromStat                 uintptr
	tcl_GetModeFromStat                    uintptr
	tcl_GetLinkCountFromStat               uintptr
	tcl_GetUserIdFromStat                  uintptr
	tcl_GetGroupIdFromStat                 uintptr
	tcl_GetDeviceTypeFromStat              uintptr
	tcl_GetAccessTimeFromStat              uintptr
	tcl_GetModificationTimeFromStat        uintptr
	tcl_GetChangeTimeFromStat              uintptr
	tcl_GetSizeFromStat                    uintptr
	tcl_GetBlocksFromStat                  uintptr
	tcl_GetBlockSizeFromStat               uintptr
	tcl_SetEnsembleParameterList           uintptr
	tcl_GetEnsembleParameterList           uintptr
	tcl_ParseArgsObjv                      uintptr
	tcl_GetErrorLine                       uintptr
	tcl_SetErrorLine                       uintptr
	tcl_TransferResult                     uintptr
	tcl_InterpActive                       uintptr
	tcl_BackgroundException                uintptr
	tcl_ZlibDeflate                        uintptr
	tcl_ZlibInflate                        uintptr
	tcl_ZlibCRC32                          uintptr
	tcl_ZlibAdler32                        uintptr
	tcl_ZlibStreamInit                     uintptr
	tcl_ZlibStreamGetCommandName           uintptr
	tcl_ZlibStreamEof                      uintptr
	tcl_ZlibStreamChecksum                 uintptr
	tcl_ZlibStreamPut                      uintptr
	tcl_ZlibStreamGet                      uintptr
	tcl_ZlibStreamClose                    uintptr
	tcl_ZlibStreamReset                    uintptr
	tcl_SetStartupScript                   uintptr
	tcl_GetStartupScript                   uintptr
	tcl_CloseEx                            uintptr
	tcl_NRExprObj                          uintptr
	tcl_NRSubstObj                         uintptr
	tcl_LoadFile                           uintptr
	tcl_FindSymbol                         uintptr
	tcl_FSUnloadFile                       uintptr
	tcl_ZlibStreamSetCompressionDictionary uintptr
	reserved631                            uintptr
	reserved632                            uintptr
	reserved633                            uintptr
	reserved634                            uintptr
	reserved635                            uintptr
	reserved636                            uintptr
	reserved637                            uintptr
	reserved638                            uintptr
	reserved639                            uintptr
	reserved640                            uintptr
	reserved641                            uintptr
	reserved642                            uintptr
	reserved643                            uintptr
	reserved644                            uintptr
	reserved645                            uintptr
	reserved646                            uintptr
	reserved647                            uintptr
	tclUnusedStubEntry                     uintptr
} /* tclDecls.h:2522:3 */

type TclPlatStubs = TclPlatStubs1 /* tclPlatDecls.h:86:3 */

// end block for C++

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// ISO C Standard:  7.17  Common definitions  <stddef.h>

// Copyright (C) 1989-2018 Free Software Foundation, Inc.
//
// This file is part of GCC.
//
// GCC is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3, or (at your option)
// any later version.
//
// GCC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// Under Section 7 of GPL version 3, you are granted additional
// permissions described in the GCC Runtime Library Exception, version
// 3.1, as published by the Free Software Foundation.
//
// You should have received a copy of the GNU General Public License and
// a copy of the GCC Runtime Library Exception along with this program;
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
// <http://www.gnu.org/licenses/>.

// ISO C Standard:  7.17  Common definitions  <stddef.h>

// Ensure WORDS_BIGENDIAN is defined correctly:
// Needs to happen here in addition to configure to work with fat compiles on
// Darwin (where configure runs only once for multiple architectures).

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Used to tag functions that are only to be visible within the module being
// built and not outside it (where this is supported by the linker).

// Macros used to cast between pointers and integers (e.g. when storing an int
// in ClientData), on 64-bit architectures they avoid gcc warning about "cast
// to/from pointer from/to integer of different size".

// The following procedures allow namespaces to be customized to support
// special name resolution rules for commands/variables.

type Tcl_ResolvedVarInfo1 = struct {
	fetchProc  uintptr
	deleteProc uintptr
} /* tclInt.h:131:1 */

// The following structure encapsulates the routines needed to resolve a
// variable reference at runtime. Any variable specific state will typically
// be appended to this structure.

type Tcl_ResolvedVarInfo = Tcl_ResolvedVarInfo1 /* tclInt.h:147:3 */

type Tcl_ResolverInfo1 = struct {
	cmdResProc         uintptr
	varResProc         uintptr
	compiledVarResProc uintptr
} /* tclInt.h:159:9 */

type Tcl_ResolverInfo = Tcl_ResolverInfo1 /* tclInt.h:170:3 */
type NamespacePathEntry1 = struct {
	nsPtr        uintptr
	creatorNsPtr uintptr
	prevPtr      uintptr
	nextPtr      uintptr
} /* tclInt.h:194:9 */

type NamespacePathEntry = NamespacePathEntry1 /* tclInt.h:194:35 */

// Special hashtable for variables: this is just a Tcl_HashTable with an nsPtr
// field added at the end: in this way variables can find their namespace
// without having to copy a pointer in their struct: they can access it via
// their hPtr->tablePtr.

type TclVarHashTable1 = struct {
	table Tcl_HashTable
	nsPtr uintptr
} /* tclInt.h:194:9 */

// Special hashtable for variables: this is just a Tcl_HashTable with an nsPtr
// field added at the end: in this way variables can find their namespace
// without having to copy a pointer in their struct: they can access it via
// their hPtr->tablePtr.

type Namespace1 = struct {
	name                  uintptr
	fullName              uintptr
	clientData            ClientData
	deleteProc            uintptr
	parentPtr             uintptr
	childTable            Tcl_HashTable
	nsId                  int32
	interp                uintptr
	flags                 int32
	activationCount       int32
	refCount              int32
	cmdTable              Tcl_HashTable
	varTable              TclVarHashTable
	exportArrayPtr        uintptr
	numExportPatterns     int32
	maxExportPatterns     int32
	cmdRefEpoch           int32
	resolverEpoch         int32
	cmdResProc            uintptr
	varResProc            uintptr
	compiledVarResProc    uintptr
	exportLookupEpoch     int32
	ensembles             uintptr
	unknownHandlerPtr     uintptr
	commandPathLength     int32
	commandPathArray      uintptr
	commandPathSourceList uintptr
	earlyDeleteProc       uintptr
} /* tclInt.h:194:9 */

// Special hashtable for variables: this is just a Tcl_HashTable with an nsPtr
// field added at the end: in this way variables can find their namespace
// without having to copy a pointer in their struct: they can access it via
// their hPtr->tablePtr.

type TclVarHashTable = TclVarHashTable1 /* tclInt.h:206:3 */

// This is for itcl - it likes to search our varTables directly :(

// Define this to reduce the amount of space that the average namespace
// consumes by only allocating the table of child namespaces when necessary.
// Defining it breaks compatibility for Tcl extensions (e.g., itcl) which
// reach directly into the Namespace structure.

// The structure below defines a namespace.
// Note: the first five fields must match exactly the fields in a
// Tcl_Namespace structure (see tcl.h). If you change one, be sure to change
// the other.

type Namespace = Namespace1 /* tclInt.h:345:3 */

// Flags used to represent the status of a namespace:
//
// NS_DYING -	1 means Tcl_DeleteNamespace has been called to delete the
//		namespace but there are still active call frames on the Tcl
//		stack that refer to the namespace. When the last call frame
//		referring to it has been popped, it's variables and command
//		will be destroyed and it will be marked "dead" (NS_DEAD). The
//		namespace can no longer be looked up by name.
// NS_DEAD -	1 means Tcl_DeleteNamespace has been called to delete the
//		namespace and no call frames still refer to it. Its variables
//		and command have already been destroyed. This bit allows the
//		namespace resolution code to recognize that the namespace is
//		"deleted". When the last namespaceName object in any byte code
//		unit that refers to the namespace has been freed (i.e., when
//		the namespace's refCount is 0), the namespace's storage will
//		be freed.
// NS_KILLED -	1 means that TclTeardownNamespace has already been called on
//		this namespace and it should not be called again [Bug 1355942]
// NS_SUPPRESS_COMPILATION -
//		Marks the commands in this namespace for not being compiled,
//		forcing them to be looked up every time.

// Flags passed to TclGetNamespaceForQualName:
//
// TCL_GLOBAL_ONLY		- (see tcl.h) Look only in the global ns.
// TCL_NAMESPACE_ONLY		- (see tcl.h) Look only in the context ns.
// TCL_CREATE_NS_IF_UNKNOWN	- Create unknown namespaces.
// TCL_FIND_ONLY_NS		- The name sought is a namespace name.

// The client data for an ensemble command. This consists of the table of
// commands that are actually exported by the namespace, and an epoch counter
// that, combined with the exportLookupEpoch field of the namespace structure,
// defines whether the table contains valid data or will need to be recomputed
// next time the ensemble command is called.

type EnsembleConfig1 = struct {
	nsPtr              uintptr
	token              Tcl_Command
	epoch              int32
	subcommandArrayPtr uintptr
	subcommandTable    Tcl_HashTable
	next               uintptr
	flags              int32
	subcommandDict     uintptr
	subcmdList         uintptr
	unknownHandler     uintptr
	parameterList      uintptr
	numParameters      int32
} /* tclInt.h:415:9 */

// Flags used to represent the status of a namespace:
//
// NS_DYING -	1 means Tcl_DeleteNamespace has been called to delete the
//		namespace but there are still active call frames on the Tcl
//		stack that refer to the namespace. When the last call frame
//		referring to it has been popped, it's variables and command
//		will be destroyed and it will be marked "dead" (NS_DEAD). The
//		namespace can no longer be looked up by name.
// NS_DEAD -	1 means Tcl_DeleteNamespace has been called to delete the
//		namespace and no call frames still refer to it. Its variables
//		and command have already been destroyed. This bit allows the
//		namespace resolution code to recognize that the namespace is
//		"deleted". When the last namespaceName object in any byte code
//		unit that refers to the namespace has been freed (i.e., when
//		the namespace's refCount is 0), the namespace's storage will
//		be freed.
// NS_KILLED -	1 means that TclTeardownNamespace has already been called on
//		this namespace and it should not be called again [Bug 1355942]
// NS_SUPPRESS_COMPILATION -
//		Marks the commands in this namespace for not being compiled,
//		forcing them to be looked up every time.

// Flags passed to TclGetNamespaceForQualName:
//
// TCL_GLOBAL_ONLY		- (see tcl.h) Look only in the global ns.
// TCL_NAMESPACE_ONLY		- (see tcl.h) Look only in the context ns.
// TCL_CREATE_NS_IF_UNKNOWN	- Create unknown namespaces.
// TCL_FIND_ONLY_NS		- The name sought is a namespace name.

// The client data for an ensemble command. This consists of the table of
// commands that are actually exported by the namespace, and an epoch counter
// that, combined with the exportLookupEpoch field of the namespace structure,
// defines whether the table contains valid data or will need to be recomputed
// next time the ensemble command is called.

type EnsembleConfig = EnsembleConfig1 /* tclInt.h:483:3 */

// Various bits for the EnsembleConfig.flags field.

//----------------------------------------------------------------
// Data structures related to variables. These are used primarily in tclVar.c
//----------------------------------------------------------------

// The following structure defines a variable trace, which is used to invoke a
// specific C procedure whenever certain operations are performed on a
// variable.

type VarTrace1 = struct {
	traceProc  uintptr
	clientData ClientData
	flags      int32
	nextPtr    uintptr
} /* tclInt.h:506:9 */

// Various bits for the EnsembleConfig.flags field.

//----------------------------------------------------------------
// Data structures related to variables. These are used primarily in tclVar.c
//----------------------------------------------------------------

// The following structure defines a variable trace, which is used to invoke a
// specific C procedure whenever certain operations are performed on a
// variable.

type VarTrace = VarTrace1 /* tclInt.h:516:3 */

// The following structure defines a command trace, which is used to invoke a
// specific C procedure whenever certain operations are performed on a
// command.

type CommandTrace1 = struct {
	traceProc  uintptr
	clientData ClientData
	flags      int32
	nextPtr    uintptr
	refCount   int32
} /* tclInt.h:524:9 */

// The following structure defines a command trace, which is used to invoke a
// specific C procedure whenever certain operations are performed on a
// command.

type CommandTrace = CommandTrace1 /* tclInt.h:539:3 */

// When a command trace is active (i.e. its associated procedure is executing)
// one of the following structures is linked into a list associated with the
// command's interpreter. The information in the structure is needed in order
// for Tcl to behave reasonably if traces are deleted while traces are active.

type ActiveCommandTrace1 = struct {
	cmdPtr       uintptr
	nextPtr      uintptr
	nextTracePtr uintptr
	reverseScan  int32
} /* tclInt.h:548:9 */

// When a command trace is active (i.e. its associated procedure is executing)
// one of the following structures is linked into a list associated with the
// command's interpreter. The information in the structure is needed in order
// for Tcl to behave reasonably if traces are deleted while traces are active.

type Command1 = struct {
	hPtr          uintptr
	nsPtr         uintptr
	refCount      int32
	cmdEpoch      int32
	compileProc   uintptr
	objProc       uintptr
	objClientData ClientData
	proc          uintptr
	clientData    ClientData
	deleteProc    uintptr
	deleteData    ClientData
	flags         int32
	importRefPtr  uintptr
	tracePtr      uintptr
	nreProc       uintptr
} /* tclInt.h:548:9 */

// When a command trace is active (i.e. its associated procedure is executing)
// one of the following structures is linked into a list associated with the
// command's interpreter. The information in the structure is needed in order
// for Tcl to behave reasonably if traces are deleted while traces are active.

type ActiveCommandTrace = ActiveCommandTrace1 /* tclInt.h:559:3 */

// When a variable trace is active (i.e. its associated procedure is
// executing) one of the following structures is linked into a list associated
// with the variable's interpreter. The information in the structure is needed
// in order for Tcl to behave reasonably if traces are deleted while traces
// are active.

type ActiveVarTrace1 = struct {
	varPtr       uintptr
	nextPtr      uintptr
	nextTracePtr uintptr
} /* tclInt.h:569:9 */

// When a variable trace is active (i.e. its associated procedure is
// executing) one of the following structures is linked into a list associated
// with the variable's interpreter. The information in the structure is needed
// in order for Tcl to behave reasonably if traces are deleted while traces
// are active.

type Var1 = struct {
	flags int32
	value struct{ objPtr uintptr }
} /* tclInt.h:569:9 */

// When a variable trace is active (i.e. its associated procedure is
// executing) one of the following structures is linked into a list associated
// with the variable's interpreter. The information in the structure is needed
// in order for Tcl to behave reasonably if traces are deleted while traces
// are active.

type ActiveVarTrace = ActiveVarTrace1 /* tclInt.h:578:3 */

// The structure below defines a variable, which associates a string name with
// a Tcl_Obj value. These structures are kept in procedure call frames (for
// local variables recognized by the compiler) or in the heap (for global
// variables and any variable not known to the compiler). For each Var
// structure in the heap, a hash table entry holds the variable name and a
// pointer to the Var structure.

type Var = Var1 /* tclInt.h:604:3 */

type VarInHash1 = struct {
	__var    Var
	refCount int32
	entry    Tcl_HashEntry
} /* tclInt.h:606:9 */

type VarInHash = VarInHash1 /* tclInt.h:621:3 */

// The variable-length structure below describes a local variable of a
// procedure that was recognized by the compiler. These variables have a name,
// an element in the array of compiler-assigned local variables in the
// procedure's call frame, and various other items of information. If the
// local variable is a formal argument, it may also have a default value. The
// compiler can't recognize local variables whose names are expressions (these
// names are only known at runtime when the expressions are evaluated) or
// local variables that are created as a result of an "upvar" or "uplevel"
// command. These other local variables are kept separately in a hash table in
// the call frame.

type CompiledLocal1 = struct {
	nextPtr     uintptr
	nameLength  int32
	frameIndex  int32
	flags       int32
	defValuePtr uintptr
	resolveInfo uintptr
	name        [1]int8
	_           [3]byte
} /* tclInt.h:900:9 */

// The variable-length structure below describes a local variable of a
// procedure that was recognized by the compiler. These variables have a name,
// an element in the array of compiler-assigned local variables in the
// procedure's call frame, and various other items of information. If the
// local variable is a formal argument, it may also have a default value. The
// compiler can't recognize local variables whose names are expressions (these
// names are only known at runtime when the expressions are evaluated) or
// local variables that are created as a result of an "upvar" or "uplevel"
// command. These other local variables are kept separately in a hash table in
// the call frame.

type CompiledLocal = CompiledLocal1 /* tclInt.h:928:3 */

// The structure below defines a command procedure, which consists of a
// collection of Tcl commands plus information about arguments and other local
// variables recognized at compile time.

type Proc1 = struct {
	iPtr              uintptr
	refCount          int32
	cmdPtr            uintptr
	bodyPtr           uintptr
	numArgs           int32
	numCompiledLocals int32
	firstLocalPtr     uintptr
	lastLocalPtr      uintptr
} /* tclInt.h:936:9 */

// The structure below defines a command procedure, which consists of a
// collection of Tcl commands plus information about arguments and other local
// variables recognized at compile time.

type Interp1 = struct {
	result            uintptr
	freeProc          uintptr
	errorLine         int32
	stubTable         uintptr
	handle            TclHandle
	globalNsPtr       uintptr
	hiddenCmdTablePtr uintptr
	interpInfo        ClientData
	extra             struct {
		optimizer uintptr
		_         [52]byte
	}
	numLevels              int32
	maxNestingDepth        int32
	framePtr               uintptr
	varFramePtr            uintptr
	activeVarTracePtr      uintptr
	returnCode             int32
	rootFramePtr           uintptr
	lookupNsPtr            uintptr
	appendResult           uintptr
	appendAvl              int32
	appendUsed             int32
	packageTable           Tcl_HashTable
	packageUnknown         uintptr
	cmdCount               int32
	evalFlags              int32
	unused1                int32
	literalTable           LiteralTable
	compileEpoch           int32
	compiledProcPtr        uintptr
	resolverPtr            uintptr
	scriptFile             uintptr
	flags                  int32
	randSeed               int32
	tracePtr               uintptr
	assocData              uintptr
	execEnvPtr             uintptr
	emptyObjPtr            uintptr
	resultSpace            [201]int8
	_                      [3]byte
	objResultPtr           uintptr
	threadId               Tcl_ThreadId
	activeCmdTracePtr      uintptr
	activeInterpTracePtr   uintptr
	tracesForbiddingInline int32
	returnOpts             uintptr
	errorInfo              uintptr
	eiVar                  uintptr
	errorCode              uintptr
	ecVar                  uintptr
	returnLevel            int32
	limit                  struct {
		active            int32
		granularityTicker int32
		exceeded          int32
		cmdCount          int32
		cmdHandlers       uintptr
		cmdGranularity    int32
		time              Tcl_Time
		timeHandlers      uintptr
		timeGranularity   int32
		timeEvent         Tcl_TimerToken
		callbacks         Tcl_HashTable
	}
	ensembleRewrite struct {
		sourceObjs      uintptr
		numRemovedObjs  int32
		numInsertedObjs int32
	}
	chanMsg           uintptr
	cmdFramePtr       uintptr
	invokeCmdFramePtr uintptr
	invokeWord        int32
	linePBodyPtr      uintptr
	lineBCPtr         uintptr
	lineLABCPtr       uintptr
	lineLAPtr         uintptr
	scriptCLLocPtr    uintptr
	packagePrefer     int32
	varTraces         Tcl_HashTable
	varSearches       Tcl_HashTable
	allocCache        uintptr
	pendingObjDataPtr uintptr
	asyncReadyPtr     uintptr
	objectFoundation  uintptr
	deferredCallbacks uintptr
	asyncCancel       Tcl_AsyncHandler
	asyncCancelMsg    uintptr
	errorStack        uintptr
	upLiteral         uintptr
	callLiteral       uintptr
	innerLiteral      uintptr
	innerContext      uintptr
	resetErrorStack   int32
} /* tclInt.h:936:9 */

// The structure below defines a command procedure, which consists of a
// collection of Tcl commands plus information about arguments and other local
// variables recognized at compile time.

type Proc = Proc1 /* tclInt.h:963:3 */

// The structure below defines a command trace. This is used to allow Tcl
// clients to find out whenever a command is about to be executed.

type Trace1 = struct {
	level      int32
	proc       uintptr
	clientData ClientData
	nextPtr    uintptr
	flags      int32
	delProc    uintptr
} /* tclInt.h:936:9 */

// The structure below defines a command trace. This is used to allow Tcl
// clients to find out whenever a command is about to be executed.

type Trace = Trace1 /* tclInt.h:987:3 */

// When an interpreter trace is active (i.e. its associated procedure is
// executing), one of the following structures is linked into a list
// associated with the interpreter. The information in the structure is needed
// in order for Tcl to behave reasonably if traces are deleted while traces
// are active.

type ActiveInterpTrace1 = struct {
	nextPtr      uintptr
	nextTracePtr uintptr
	reverseScan  int32
} /* tclInt.h:936:9 */

// When an interpreter trace is active (i.e. its associated procedure is
// executing), one of the following structures is linked into a list
// associated with the interpreter. The information in the structure is needed
// in order for Tcl to behave reasonably if traces are deleted while traces
// are active.

type ActiveInterpTrace = ActiveInterpTrace1 /* tclInt.h:1007:3 */

// Flag values designating types of execution traces. See tclTrace.c for
// related flag values.
//
// TCL_TRACE_ENTER_EXEC		- triggers enter/enterstep traces.
// 				- passed to Tcl_CreateObjTrace to set up
//				  "enterstep" traces.
// TCL_TRACE_LEAVE_EXEC		- triggers leave/leavestep traces.
// 				- passed to Tcl_CreateObjTrace to set up
//				  "leavestep" traces.

// The structure below defines an entry in the assocData hash table which is
// associated with an interpreter. The entry contains a pointer to a function
// to call when the interpreter is deleted, and a pointer to a user-defined
// piece of data.

type AssocData1 = struct {
	proc       uintptr
	clientData ClientData
} /* tclInt.h:1031:9 */

// Flag values designating types of execution traces. See tclTrace.c for
// related flag values.
//
// TCL_TRACE_ENTER_EXEC		- triggers enter/enterstep traces.
// 				- passed to Tcl_CreateObjTrace to set up
//				  "enterstep" traces.
// TCL_TRACE_LEAVE_EXEC		- triggers leave/leavestep traces.
// 				- passed to Tcl_CreateObjTrace to set up
//				  "leavestep" traces.

// The structure below defines an entry in the assocData hash table which is
// associated with an interpreter. The entry contains a pointer to a function
// to call when the interpreter is deleted, and a pointer to a user-defined
// piece of data.

type AssocData = AssocData1 /* tclInt.h:1034:3 */

// The structure below defines a call frame. A call frame defines a naming
// context for a procedure call: its local naming scope (for local variables)
// and its global naming scope (a namespace, perhaps the global :: namespace).
// A call frame can also define the naming context for a namespace eval or
// namespace inscope command: the namespace in which the command's code should
// execute. The Tcl_CallFrame structures exist only while procedures or
// namespace eval/inscope's are being executed, and provide a kind of Tcl call
// stack.
//
// WARNING!! The structure definition must be kept consistent with the
// Tcl_CallFrame structure in tcl.h. If you change one, change the other.

// Will be grown to contain: pointers to the varnames (allocated at the end),
// plus the init values for each variable (suitable to be memcopied on init)

type LocalCache1 = struct {
	refCount int32
	numVars  int32
	varName0 uintptr
} /* tclInt.h:936:9 */

// The structure below defines a call frame. A call frame defines a naming
// context for a procedure call: its local naming scope (for local variables)
// and its global naming scope (a namespace, perhaps the global :: namespace).
// A call frame can also define the naming context for a namespace eval or
// namespace inscope command: the namespace in which the command's code should
// execute. The Tcl_CallFrame structures exist only while procedures or
// namespace eval/inscope's are being executed, and provide a kind of Tcl call
// stack.
//
// WARNING!! The structure definition must be kept consistent with the
// Tcl_CallFrame structure in tcl.h. If you change one, change the other.

// Will be grown to contain: pointers to the varnames (allocated at the end),
// plus the init values for each variable (suitable to be memcopied on init)

type LocalCache = LocalCache1 /* tclInt.h:1059:3 */

type CallFrame1 = struct {
	nsPtr             uintptr
	isProcCallFrame   int32
	objc              int32
	objv              uintptr
	callerPtr         uintptr
	callerVarPtr      uintptr
	level             int32
	procPtr           uintptr
	varTablePtr       uintptr
	numCompiledLocals int32
	compiledLocals    uintptr
	clientData        ClientData
	localCachePtr     uintptr
	tailcallPtr       uintptr
} /* tclInt.h:936:9 */

type CallFrame = CallFrame1 /* tclInt.h:1123:3 */

// TIP #280
// The structure below defines a command frame. A command frame provides
// location information for all commands executing a tcl script (source, eval,
// uplevel, procedure bodies, ...). The runtime structure essentially contains
// the stack trace as it would be if the currently executing command were to
// throw an error.
//
// For commands where it makes sense it refers to the associated CallFrame as
// well.
//
// The structures are chained in a single list, with the top of the stack
// anchored in the Interp structure.
//
// Instances can be allocated on the C stack, or the heap, the former making
// cleanup a bit simpler.

type CmdFrame1 = struct {
	__type   int32
	level    int32
	line     uintptr
	nline    int32
	framePtr uintptr
	nextPtr  uintptr
	data     struct {
		eval struct{ path uintptr }
		_    [4]byte
	}
	cmdObj uintptr
	cmd    uintptr
	len    int32
	litarg uintptr
} /* tclInt.h:936:9 */

// TIP #280
// The structure below defines a command frame. A command frame provides
// location information for all commands executing a tcl script (source, eval,
// uplevel, procedure bodies, ...). The runtime structure essentially contains
// the stack trace as it would be if the currently executing command were to
// throw an error.
//
// For commands where it makes sense it refers to the associated CallFrame as
// well.
//
// The structures are chained in a single list, with the top of the stack
// anchored in the Interp structure.
//
// Instances can be allocated on the C stack, or the heap, the former making
// cleanup a bit simpler.

type CFWordBC1 = struct {
	framePtr uintptr
	pc       int32
	word     int32
	prevPtr  uintptr
	nextPtr  uintptr
	obj      uintptr
} /* tclInt.h:936:9 */

// TIP #280
// The structure below defines a command frame. A command frame provides
// location information for all commands executing a tcl script (source, eval,
// uplevel, procedure bodies, ...). The runtime structure essentially contains
// the stack trace as it would be if the currently executing command were to
// throw an error.
//
// For commands where it makes sense it refers to the associated CallFrame as
// well.
//
// The structures are chained in a single list, with the top of the stack
// anchored in the Interp structure.
//
// Instances can be allocated on the C stack, or the heap, the former making
// cleanup a bit simpler.

type CmdFrame = CmdFrame1 /* tclInt.h:1213:3 */

type CFWord1 = struct {
	framePtr uintptr
	word     int32
	refCount int32
} /* tclInt.h:1215:9 */

type CFWord = CFWord1 /* tclInt.h:1220:3 */

type CFWordBC = CFWordBC1 /* tclInt.h:1232:3 */

// Structure to record the locations of invisible continuation lines in
// literal scripts, as character offset from the beginning of the script. Both
// compiler and direct evaluator use this information to adjust their line
// counters when tracking through the script, because when it is invoked the
// continuation line marker as a whole has been removed already, meaning that
// the \n which was part of it is gone as well, breaking regular line
// tracking.
//
// These structures are allocated and filled by both the function
// TclSubstTokens() in the file "tclParse.c" and its caller TclEvalEx() in the
// file "tclBasic.c", and stored in the thread-global hashtable "lineCLPtr" in
// file "tclObj.c". They are used by the functions TclSetByteCodeFromAny() and
// TclCompileScript(), both found in the file "tclCompile.c". Their memory is
// released by the function TclFreeObj(), in the file "tclObj.c", and also by
// the function TclThreadFinalizeObjects(), in the same file.

type ContLineLoc1 = struct {
	num int32
	loc [1]int32
} /* tclInt.h:936:9 */

// Structure to record the locations of invisible continuation lines in
// literal scripts, as character offset from the beginning of the script. Both
// compiler and direct evaluator use this information to adjust their line
// counters when tracking through the script, because when it is invoked the
// continuation line marker as a whole has been removed already, meaning that
// the \n which was part of it is gone as well, breaking regular line
// tracking.
//
// These structures are allocated and filled by both the function
// TclSubstTokens() in the file "tclParse.c" and its caller TclEvalEx() in the
// file "tclBasic.c", and stored in the thread-global hashtable "lineCLPtr" in
// file "tclObj.c". They are used by the functions TclSetByteCodeFromAny() and
// TclCompileScript(), both found in the file "tclCompile.c". Their memory is
// released by the function TclFreeObj(), in the file "tclObj.c", and also by
// the function TclThreadFinalizeObjects(), in the same file.

type ContLineLoc = ContLineLoc1 /* tclInt.h:1263:3 */
type ExtraFrameInfoField = struct {
	name       uintptr
	proc       uintptr
	clientData ClientData
} /* tclInt.h:1303:3 */
type ExtraFrameInfo = struct {
	length int32
	fields [2]ExtraFrameInfoField
} /* tclInt.h:1309:3 */

//----------------------------------------------------------------
// Data structures and procedures related to TclHandles, which are a very
// lightweight method of preserving enough information to determine if an
// arbitrary malloc'd block has been deleted.
//----------------------------------------------------------------

type TclHandle = uintptr /* tclInt.h:1319:14 */

// The data structure for a (linked list of) execution stacks.

type ExecStack1 = struct {
	prevPtr    uintptr
	nextPtr    uintptr
	markerPtr  uintptr
	endPtr     uintptr
	tosPtr     uintptr
	stackWords [1]uintptr
} /* tclInt.h:936:9 */

// The data structure for a (linked list of) execution stacks.

type ExecStack = ExecStack1 /* tclInt.h:1407:3 */

// The data structure defining the execution environment for ByteCode's.
// There is one ExecEnv structure per Tcl interpreter. It holds the evaluation
// stack that holds command operands and results. The stack grows towards
// increasing addresses. The member stackPtr points to the stackItems of the
// currently active execution stack.

type CorContext1 = struct {
	framePtr    uintptr
	varFramePtr uintptr
	cmdFramePtr uintptr
	lineLABCPtr uintptr
} /* tclInt.h:936:9 */

// The data structure defining the execution environment for ByteCode's.
// There is one ExecEnv structure per Tcl interpreter. It holds the evaluation
// stack that holds command operands and results. The stack grows towards
// increasing addresses. The member stackPtr points to the stackItems of the
// currently active execution stack.

type CorContext = CorContext1 /* tclInt.h:1422:3 */

type CoroutineData1 = struct {
	cmdPtr       uintptr
	eePtr        uintptr
	callerEEPtr  uintptr
	caller       CorContext
	running      CorContext
	lineLABCPtr  uintptr
	stackLevel   uintptr
	auxNumLevels int32
	nargs        int32
} /* tclInt.h:936:9 */

type ExecEnv1 = struct {
	execStackPtr uintptr
	constants    [2]uintptr
	interp       uintptr
	callbackPtr  uintptr
	corPtr       uintptr
	rewind       int32
} /* tclInt.h:936:9 */

type CoroutineData = CoroutineData1 /* tclInt.h:1443:3 */

type NRE_callback1 = struct {
	procPtr uintptr
	data    [4]ClientData
	nextPtr uintptr
} /* tclInt.h:936:9 */

type ExecEnv = ExecEnv1 /* tclInt.h:1454:3 */

// The definitions for the LiteralTable and LiteralEntry structures. Each
// interpreter contains a LiteralTable. It is used to reduce the storage
// needed for all the Tcl objects that hold the literals of scripts compiled
// by the interpreter. A literal's object is shared by all the ByteCodes that
// refer to the literal. Each distinct literal has one LiteralEntry entry in
// the LiteralTable. A literal table is a specialized hash table that is
// indexed by the literal's string representation, which may contain null
// characters.
//
// Note that we reduce the space needed for literals by sharing literal
// objects both within a ByteCode (each ByteCode contains a local
// LiteralTable) and across all an interpreter's ByteCodes (with the
// interpreter's global LiteralTable).

type LiteralEntry1 = struct {
	nextPtr  uintptr
	objPtr   uintptr
	refCount int32
	nsPtr    uintptr
} /* tclInt.h:936:9 */

// The definitions for the LiteralTable and LiteralEntry structures. Each
// interpreter contains a LiteralTable. It is used to reduce the storage
// needed for all the Tcl objects that hold the literals of scripts compiled
// by the interpreter. A literal's object is shared by all the ByteCodes that
// refer to the literal. Each distinct literal has one LiteralEntry entry in
// the LiteralTable. A literal table is a specialized hash table that is
// indexed by the literal's string representation, which may contain null
// characters.
//
// Note that we reduce the space needed for literals by sharing literal
// objects both within a ByteCode (each ByteCode contains a local
// LiteralTable) and across all an interpreter's ByteCodes (with the
// interpreter's global LiteralTable).

type LiteralEntry = LiteralEntry1 /* tclInt.h:1490:3 */

type LiteralTable1 = struct {
	buckets       uintptr
	staticBuckets [4]uintptr
	numBuckets    int32
	numEntries    int32
	rebuildSize   int32
	mask          int32
} /* tclInt.h:936:9 */

type LiteralTable = LiteralTable1 /* tclInt.h:1506:3 */

// The following structure defines for each Tcl interpreter various
// statistics-related information about the bytecode compiler and
// interpreter's operation in that interpreter.

// Structure used in implementation of those core ensembles which are
// partially compiled. Used as an array of these, with a terminating field
// whose 'name' is NULL.

type EnsembleImplMap = struct {
	name        uintptr
	proc        uintptr
	compileProc uintptr
	nreProc     uintptr
	clientData  ClientData
	unsafe      int32
} /* tclInt.h:1560:3 */

//----------------------------------------------------------------
// Data structures related to commands.
//----------------------------------------------------------------

// An imported command is created in an namespace when it imports a "real"
// command from another namespace. An imported command has a Command structure
// that points (via its ClientData value) to the "real" Command structure in
// the source namespace's command table. The real command records all the
// imported commands that refer to it in a list of ImportRef structures so
// that they can be deleted when the real command is deleted.

type ImportRef1 = struct {
	importedCmdPtr uintptr
	nextPtr        uintptr
} /* tclInt.h:548:9 */

//----------------------------------------------------------------
// Data structures related to commands.
//----------------------------------------------------------------

// An imported command is created in an namespace when it imports a "real"
// command from another namespace. An imported command has a Command structure
// that points (via its ClientData value) to the "real" Command structure in
// the source namespace's command table. The real command records all the
// imported commands that refer to it in a list of ImportRef structures so
// that they can be deleted when the real command is deleted.

type ImportRef = ImportRef1 /* tclInt.h:1588:3 */

// Data structure used as the ClientData of imported commands: commands
// created in an namespace when it imports a "real" command from another
// namespace.

type ImportedCmdData1 = struct {
	realCmdPtr uintptr
	selfPtr    uintptr
} /* tclInt.h:1596:9 */

// Data structure used as the ClientData of imported commands: commands
// created in an namespace when it imports a "real" command from another
// namespace.

type ImportedCmdData = ImportedCmdData1 /* tclInt.h:1603:3 */

// A Command structure exists for each command in a namespace. The Tcl_Command
// opaque type actually refers to these structures.

type Command = Command1 /* tclInt.h:1653:3 */

// Flag bits for commands.
//
// CMD_IS_DELETED -		Means that the command is in the process of
//				being deleted (its deleteProc is currently
//				executing). Other attempts to delete the
//				command should be ignored.
// CMD_TRACE_ACTIVE -		1 means that trace processing is currently
//				underway for a rename/delete change. See the
//				two flags below for which is currently being
//				processed.
// CMD_HAS_EXEC_TRACES -	1 means that this command has at least one
//				execution trace (as opposed to simple
//				delete/rename traces) in its tracePtr list.
// CMD_COMPILES_EXPANDED -	1 means that this command has a compiler that
//				can handle expansion (provided it is not the
//				first word).
// TCL_TRACE_RENAME -		A rename trace is in progress. Further
//				recursive renames will not be traced.
// TCL_TRACE_DELETE -		A delete trace is in progress. Further
//				recursive deletes will not be traced.
// (these last two flags are defined in tcl.h)

//----------------------------------------------------------------
// Data structures related to name resolution procedures.
//----------------------------------------------------------------

// The interpreter keeps a linked list of name resolution schemes. The scheme
// for a namespace is consulted first, followed by the list of schemes in an
// interpreter, followed by the default name resolution in Tcl. Schemes are
// added/removed from the interpreter's list by calling Tcl_AddInterpResolver
// and Tcl_RemoveInterpResolver.

type ResolverScheme1 = struct {
	name               uintptr
	cmdResProc         uintptr
	varResProc         uintptr
	compiledVarResProc uintptr
	nextPtr            uintptr
} /* tclInt.h:936:9 */

// Flag bits for commands.
//
// CMD_IS_DELETED -		Means that the command is in the process of
//				being deleted (its deleteProc is currently
//				executing). Other attempts to delete the
//				command should be ignored.
// CMD_TRACE_ACTIVE -		1 means that trace processing is currently
//				underway for a rename/delete change. See the
//				two flags below for which is currently being
//				processed.
// CMD_HAS_EXEC_TRACES -	1 means that this command has at least one
//				execution trace (as opposed to simple
//				delete/rename traces) in its tracePtr list.
// CMD_COMPILES_EXPANDED -	1 means that this command has a compiler that
//				can handle expansion (provided it is not the
//				first word).
// TCL_TRACE_RENAME -		A rename trace is in progress. Further
//				recursive renames will not be traced.
// TCL_TRACE_DELETE -		A delete trace is in progress. Further
//				recursive deletes will not be traced.
// (these last two flags are defined in tcl.h)

//----------------------------------------------------------------
// Data structures related to name resolution procedures.
//----------------------------------------------------------------

// The interpreter keeps a linked list of name resolution schemes. The scheme
// for a namespace is consulted first, followed by the list of schemes in an
// interpreter, followed by the default name resolution in Tcl. Schemes are
// added/removed from the interpreter's list by calling Tcl_AddInterpResolver
// and Tcl_RemoveInterpResolver.

type ResolverScheme = ResolverScheme1 /* tclInt.h:1716:3 */

//----------------------------------------------------------------
// This structure shadows the first few fields of the memory cache for the
// allocator defined in tclThreadAlloc.c; it has to be kept in sync with the
// definition there.
// Some macros require knowledge of some fields in the struct in order to
// avoid hitting the TSD unnecessarily. In order to facilitate this, a pointer
// to the relevant fields is kept in the allocCache field in struct Interp.
//----------------------------------------------------------------

type AllocCache1 = struct {
	nextPtr     uintptr
	owner       Tcl_ThreadId
	firstObjPtr uintptr
	numObjects  int32
} /* tclInt.h:936:9 */

//----------------------------------------------------------------
// This structure shadows the first few fields of the memory cache for the
// allocator defined in tclThreadAlloc.c; it has to be kept in sync with the
// definition there.
// Some macros require knowledge of some fields in the struct in order to
// avoid hitting the TSD unnecessarily. In order to facilitate this, a pointer
// to the relevant fields is kept in the allocCache field in struct Interp.
//----------------------------------------------------------------

type AllocCache = AllocCache1 /* tclInt.h:1749:3 */

//----------------------------------------------------------------
// This structure defines an interpreter, which is a collection of commands
// plus other state information related to interpreting commands, such as
// variable storage. Primary responsibility for this data structure is in
// tclBasic.c, but almost every Tcl source file uses something in here.
//----------------------------------------------------------------

type Interp = Interp1 /* tclInt.h:2145:3 */

// Macros that use the TSD-ekeko.

// Macros for script cancellation support (TIP #285).

// Macros for splicing into and out of doubly linked lists. They assume
// existence of struct items 'prevPtr' and 'nextPtr'.
//
// a = element to add or remove.
// b = list head.
//
// TclSpliceIn adds to the head of the list.

// EvalFlag bits for Interp structures:
//
// TCL_ALLOW_EXCEPTIONS	1 means it's OK for the script to terminate with a
//			code other than TCL_OK or TCL_ERROR; 0 means codes
//			other than these should be turned into errors.

// Flag bits for Interp structures:
//
// DELETED:		Non-zero means the interpreter has been deleted:
//			don't process any more commands for it, and destroy
//			the structure as soon as all nested invocations of
//			Tcl_Eval are done.
// ERR_ALREADY_LOGGED:	Non-zero means information has already been logged in
//			iPtr->errorInfo for the current Tcl_Eval instance, so
//			Tcl_Eval needn't log it (used to implement the "error
//			message log" command).
// DONT_COMPILE_CMDS_INLINE: Non-zero means that the bytecode compiler should
//			not compile any commands into an inline sequence of
//			instructions. This is set 1, for example, when command
//			traces are requested.
// RAND_SEED_INITIALIZED: Non-zero means that the randSeed value of the interp
//			has not be initialized. This is set 1 when we first
//			use the rand() or srand() functions.
// SAFE_INTERP:		Non zero means that the current interp is a safe
//			interp (i.e. it has only the safe commands installed,
//			less privilege than a regular interp).
// INTERP_DEBUG_FRAME:	Used for switching on various extra interpreter
//			debug/info mechanisms (e.g. info frame eval/uplevel
//			tracing) which are performance intensive.
// INTERP_TRACE_IN_PROGRESS: Non-zero means that an interp trace is currently
//			active; so no further trace callbacks should be
//			invoked.
// INTERP_ALTERNATE_WRONG_ARGS: Used for listing second and subsequent forms
//			of the wrong-num-args string in Tcl_WrongNumArgs.
//			Makes it append instead of replacing and uses
//			different intermediate text.
// CANCELED:		Non-zero means that the script in progress should be
//			canceled as soon as possible. This can be checked by
//			extensions (and the core itself) by calling
//			Tcl_Canceled and checking if TCL_ERROR is returned.
//			This is a one-shot flag that is reset immediately upon
//			being detected; however, if the TCL_CANCEL_UNWIND flag
//			is set Tcl_Canceled will continue to report that the
//			script in progress has been canceled thereby allowing
//			the evaluation stack for the interp to be fully
//			unwound.
//
// WARNING: For the sake of some extensions that have made use of former
// internal values, do not re-use the flag values 2 (formerly ERR_IN_PROGRESS)
// or 8 (formerly ERROR_CODE_SET).

// Maximum number of levels of nesting permitted in Tcl commands (used to
// catch infinite recursion).

// The macro below is used to modify a "char" value (e.g. by casting it to an
// unsigned character) so that it can be used safely with macros such as
// isspace.

// This macro is used to properly align the memory allocated by Tcl, giving
// the same alignment as the native malloc.

// This macro is used to determine the offset needed to safely allocate any
// data structure in memory. Given a starting offset or size, it "rounds up"
// or "aligns" the offset to the next 8-byte boundary so that any data
// structure can be placed at the resulting offset without fear of an
// alignment error.
//
// WARNING!! DO NOT USE THIS MACRO TO ALIGN POINTERS: it will produce the
// wrong result on platforms that allocate addresses that are divisible by 4
// or 2. Only use it for offsets or sizes.
//
// This macro is only used by tclCompile.c in the core (Bug 926445). It
// however not be made file static, as extensions that touch bytecodes
// (notably tbcload) require it.

// The following enum values are used to specify the runtime platform setting
// of the tclPlatform variable.

type TclPlatformType = uint32 /* tclInt.h:2321:3 */

// The following enum values are used to indicate the translation of a Tcl
// channel. Declared here so that each platform can define
// TCL_PLATFORM_TRANSLATION to the native translation on that platform.

type TclEolTranslation = uint32 /* tclInt.h:2334:3 */

// Flags for TclInvoke:
//
// TCL_INVOKE_HIDDEN		Invoke a hidden command; if not set, invokes
//				an exposed command.
// TCL_INVOKE_NO_UNKNOWN	If set, "unknown" is not invoked if the
//				command to be invoked is not found. Only has
//				an effect if invoking an exposed command,
//				i.e. if TCL_INVOKE_HIDDEN is not also set.
// TCL_INVOKE_NO_TRACEBACK	Does not record traceback information if the
//				invoked command returns an error. Used if the
//				caller plans on recording its own traceback
//				information.

// The structure used as the internal representation of Tcl list objects. This
// struct is grown (reallocated and copied) as necessary to hold all the
// list's element pointers. The struct might contain more slots than currently
// used to hold all element pointers. This is done to make append operations
// faster.

type List1 = struct {
	refCount      int32
	maxElemCount  int32
	elemCount     int32
	canonicalFlag int32
	elements      uintptr
} /* tclInt.h:2363:9 */

// Flags for TclInvoke:
//
// TCL_INVOKE_HIDDEN		Invoke a hidden command; if not set, invokes
//				an exposed command.
// TCL_INVOKE_NO_UNKNOWN	If set, "unknown" is not invoked if the
//				command to be invoked is not found. Only has
//				an effect if invoking an exposed command,
//				i.e. if TCL_INVOKE_HIDDEN is not also set.
// TCL_INVOKE_NO_TRACEBACK	Does not record traceback information if the
//				invoked command returns an error. Used if the
//				caller plans on recording its own traceback
//				information.

// The structure used as the internal representation of Tcl list objects. This
// struct is grown (reallocated and copied) as necessary to hold all the
// list's element pointers. The struct might contain more slots than currently
// used to hold all element pointers. This is done to make append operations
// faster.

type List = List1 /* tclInt.h:2373:3 */

type TclFileAttrProcs1 = struct {
	getProc uintptr
	setProc uintptr
} /* tclInt.h:2542:9 */

type TclFileAttrProcs = TclFileAttrProcs1 /* tclInt.h:2545:3 */

// Opaque handle used in pipeline routines to encapsulate platform-dependent
// state.

type TclFile = uintptr /* tclInt.h:2552:25 */

// The "globParameters" argument of the function TclGlob is an or'ed
// combination of the following values:

type Tcl_PathPart = uint32 /* tclInt.h:2569:3 */

//----------------------------------------------------------------
// Data structures related to procedures
//----------------------------------------------------------------

type TclCmdProcType = uintptr    /* tclInt.h:2588:21 */
type TclObjCmdProcType = uintptr /* tclInt.h:2589:24 */

// A ProcessGlobalValue struct exists for each internal value in Tcl that is
// to be shared among several threads. Each thread sees a (Tcl_Obj) copy of
// the value, and the master is kept as a counted string, with epoch and mutex
// control. Each ProcessGlobalValue struct should be a static variable in some
// file.

type ProcessGlobalValue1 = struct {
	epoch    int32
	numBytes int32
	value    uintptr
	encoding Tcl_Encoding
	proc     uintptr
	mutex    Tcl_Mutex
	key      Tcl_ThreadDataKey
} /* tclInt.h:2608:9 */

// A ProcessGlobalValue struct exists for each internal value in Tcl that is
// to be shared among several threads. Each thread sees a (Tcl_Obj) copy of
// the value, and the master is kept as a counted string, with epoch and mutex
// control. Each ProcessGlobalValue struct should be a static variable in some
// file.

type ProcessGlobalValue = ProcessGlobalValue1 /* tclInt.h:2623:3 */

// This structure holds the data for the various iteration callbacks used to
// NRE the 'for' and 'while' commands. We need a separate structure because we
// have more than the 4 client data entries we can provide directly thorugh
// the callback API. It is the 'word' information which puts us over the
// limit. It is needed because the loop body is argument 4 of 'for' and
// argument 2 of 'while'. Not providing the correct index confuses the #280
// code. We TclSmallAlloc/Free this.

type ForIterData1 = struct {
	cond uintptr
	body uintptr
	next uintptr
	msg  uintptr
	word int32
} /* tclInt.h:2793:9 */

// This structure holds the data for the various iteration callbacks used to
// NRE the 'for' and 'while' commands. We need a separate structure because we
// have more than the 4 client data entries we can provide directly thorugh
// the callback API. It is the 'word' information which puts us over the
// limit. It is needed because the loop body is argument 4 of 'for' and
// argument 2 of 'while'. Not providing the correct index confuses the #280
// code. We TclSmallAlloc/Free this.

type ForIterData = ForIterData1 /* tclInt.h:2799:3 */

type memCmpFn_t = uintptr /* tclInt.h:3162:13 */

//----------------------------------------------------------------
// Macro used by the Tcl core to check whether a pattern has any characters
// special to [string match]. The ANSI C "prototype" for this macro is:
//
// MODULE_SCOPE int	TclMatchIsTrivial(const char *pattern);
//----------------------------------------------------------------

//----------------------------------------------------------------
// Macros used by the Tcl core to set a Tcl_Obj's numeric representation
// avoiding the corresponding function calls in time critical parts of the
// core. They should only be called on unshared objects. The ANSI C
// "prototypes" for these macros are:
//
// MODULE_SCOPE void	TclSetIntObj(Tcl_Obj *objPtr, int intValue);
// MODULE_SCOPE void	TclSetLongObj(Tcl_Obj *objPtr, long longValue);
// MODULE_SCOPE void	TclSetBooleanObj(Tcl_Obj *objPtr, long boolValue);
// MODULE_SCOPE void	TclSetWideIntObj(Tcl_Obj *objPtr, Tcl_WideInt w);
// MODULE_SCOPE void	TclSetDoubleObj(Tcl_Obj *objPtr, double d);
//----------------------------------------------------------------

// NOTE: There is to be no such thing as a "pure" boolean. Boolean values set
// programmatically go straight to being "int" Tcl_Obj's, with value 0 or 1.
// The only "boolean" Tcl_Obj's shall be those holding the cached boolean
// value of strings like: "yes", "no", "true", "false", "on", "off".

//----------------------------------------------------------------
// Macros used by the Tcl core to create and initialise objects of standard
// types, avoiding the corresponding function calls in time critical parts of
// the core. The ANSI C "prototypes" for these macros are:
//
// MODULE_SCOPE void	TclNewIntObj(Tcl_Obj *objPtr, int i);
// MODULE_SCOPE void	TclNewLongObj(Tcl_Obj *objPtr, long l);
// MODULE_SCOPE void	TclNewBooleanObj(Tcl_Obj *objPtr, int b);
// MODULE_SCOPE void	TclNewWideObj(Tcl_Obj *objPtr, Tcl_WideInt w);
// MODULE_SCOPE void	TclNewDoubleObj(Tcl_Obj *objPtr, double d);
// MODULE_SCOPE void	TclNewStringObj(Tcl_Obj *objPtr, char *s, int len);
// MODULE_SCOPE void	TclNewLiteralStringObj(Tcl_Obj*objPtr, char*sLiteral);
//
//----------------------------------------------------------------

// NOTE: There is to be no such thing as a "pure" boolean.
// See comment above TclSetBooleanObj macro above.

// The sLiteral argument *must* be a string literal; the incantation with
// sizeof(sLiteral "") will fail to compile otherwise.

//----------------------------------------------------------------
// Convenience macros for DStrings.
// The ANSI C "prototypes" for these macros are:
//
// MODULE_SCOPE char * TclDStringAppendLiteral(Tcl_DString *dsPtr,
//			const char *sLiteral);
// MODULE_SCOPE void   TclDStringClear(Tcl_DString *dsPtr);

//----------------------------------------------------------------
// Macros used by the Tcl core to test for some special double values.
// The ANSI C "prototypes" for these macros are:
//
// MODULE_SCOPE int	TclIsInfinite(double d);
// MODULE_SCOPE int	TclIsNaN(double d);

// ----------------------------------------------------------------------
// Macro to use to find the offset of a field in a structure. Computes number
// of bytes from beginning of structure to a given field.

//----------------------------------------------------------------
// Inline version of Tcl_GetCurrentNamespace and Tcl_GetGlobalNamespace.

//----------------------------------------------------------------
// Inline version of TclCleanupCommand; still need the function as it is in
// the internal stubs, but the core can use the macro instead.

//----------------------------------------------------------------
// Inline versions of Tcl_LimitReady() and Tcl_LimitExceeded to limit number
// of calls out of the critical path. Note that this code isn't particularly
// readable; the non-inline version (in tclInterp.c) is much easier to
// understand. Note also that these macros takes different args (iPtr->limit)
// to the non-inline version.

// Compile-time assertions: these produce a compile time error if the
// expression is not known to be true at compile time. If the assertion is
// known to be false, the compiler (or optimizer?) will error out with
// "division by zero". If the assertion cannot be evaluated at compile time,
// the compiler will error out with "non-static initializer".
//
// Adapted with permission from
// http://www.pixelbeat.org/programming/gcc/static_assert.html

//----------------------------------------------------------------
// Allocator for small structs (<=sizeof(Tcl_Obj)) using the Tcl_Obj pool.
// Only checked at compile time.
//
// ONLY USE FOR CONSTANT nBytes.
//
// DO NOT LET THEM CROSS THREAD BOUNDARIES
//----------------------------------------------------------------

// Support for Clang Static Analyzer <http://clang-analyzer.llvm.org>

//----------------------------------------------------------------
// Parameters, structs and macros for the non-recursive engine (NRE)
//----------------------------------------------------------------

// This is the main data struct for representing NR commands. It is designed
// to fit in sizeof(Tcl_Obj) in order to exploit the fastest memory allocator
// available.

type NRE_callback = NRE_callback1 /* tclInt.h:4891:3 */

type TclIntStubs = TclIntStubs1 /* tclIntDecls.h:908:3 */

type TclIntPlatStubs = TclIntPlatStubs1 /* tclIntPlatDecls.h:355:3 */

// !END!: Do not edit above this line.

//----------------------------------------------------------------------
//
// tclTomMathDecls.h --
//
//	This file contains the declarations for the 'libtommath'
//	functions that are exported by the Tcl library.
//
// Copyright (c) 2005 by Kevin B. Kenny.  All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution
// of this file, and for a DISCLAIMER OF ALL WARRANTIES.

// tcl.h --
//
//	This header file describes the externally-visible facilities of the
//	Tcl interpreter.
//
// Copyright (c) 1987-1994 The Regents of the University of California.
// Copyright (c) 1993-1996 Lucent Technologies.
// Copyright (c) 1994-1998 Sun Microsystems, Inc.
// Copyright (c) 1998-2000 by Scriptics Corporation.
// Copyright (c) 2002 by Kevin B. Kenny.  All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit)

// detect 64-bit mode if possible

// some default configurations.
//
// A "mp_digit" must be able to hold MP_DIGIT_BIT + 1 bits
// A "mp_word" must be able to hold 2*MP_DIGIT_BIT + 1 bits
//
// At the very least a mp_digit must be able to hold 7 bits
// [any size beyond that is ok provided it doesn't overflow the data type]

// this is the default case, 28-bit digits

// this is to make porting into LibTomCrypt easier :-)
type private_mp_word = uint64 /* tclTomMath.h:92:28 */

// default case is 28-bit digits, defines MP_28BIT as a handy macro to test

// otherwise the bits per digit is calculated automatically from the size of a mp_digit

// Primality generation flags

type mp_sign = int32   /* tclTomMath.h:163:13 */
type mp_ord = int32    /* tclTomMath.h:166:13 */
type mp_bool = int32   /* tclTomMath.h:170:13 */
type mp_err = int32    /* tclTomMath.h:173:13 */
type mp_order = int32  /* tclTomMath.h:181:13 */
type mp_endian = int32 /* tclTomMath.h:184:13 */

type TclTomMathStubs1 = struct {
	magic                       int32
	hooks                       uintptr
	tclBN_epoch                 uintptr
	tclBN_revision              uintptr
	tclBN_mp_add                uintptr
	tclBN_mp_add_d              uintptr
	tclBN_mp_and                uintptr
	tclBN_mp_clamp              uintptr
	tclBN_mp_clear              uintptr
	tclBN_mp_clear_multi        uintptr
	tclBN_mp_cmp                uintptr
	tclBN_mp_cmp_d              uintptr
	tclBN_mp_cmp_mag            uintptr
	tclBN_mp_copy               uintptr
	tclBN_mp_count_bits         uintptr
	tclBN_mp_div                uintptr
	tclBN_mp_div_d              uintptr
	tclBN_mp_div_2              uintptr
	tclBN_mp_div_2d             uintptr
	tclBN_mp_div_3              uintptr
	tclBN_mp_exch               uintptr
	tclBN_mp_expt_d             uintptr
	tclBN_mp_grow               uintptr
	tclBN_mp_init               uintptr
	tclBN_mp_init_copy          uintptr
	tclBN_mp_init_multi         uintptr
	tclBN_mp_init_set           uintptr
	tclBN_mp_init_size          uintptr
	tclBN_mp_lshd               uintptr
	tclBN_mp_mod                uintptr
	tclBN_mp_mod_2d             uintptr
	tclBN_mp_mul                uintptr
	tclBN_mp_mul_d              uintptr
	tclBN_mp_mul_2              uintptr
	tclBN_mp_mul_2d             uintptr
	tclBN_mp_neg                uintptr
	tclBN_mp_or                 uintptr
	tclBN_mp_radix_size         uintptr
	tclBN_mp_read_radix         uintptr
	tclBN_mp_rshd               uintptr
	tclBN_mp_shrink             uintptr
	tclBN_mp_set                uintptr
	tclBN_mp_sqr                uintptr
	tclBN_mp_sqrt               uintptr
	tclBN_mp_sub                uintptr
	tclBN_mp_sub_d              uintptr
	tclBN_mp_to_unsigned_bin    uintptr
	tclBN_mp_to_unsigned_bin_n  uintptr
	tclBN_mp_toradix_n          uintptr
	tclBN_mp_unsigned_bin_size  uintptr
	tclBN_mp_xor                uintptr
	tclBN_mp_zero               uintptr
	tclBN_reverse               uintptr
	tclBN_fast_s_mp_mul_digs    uintptr
	tclBN_fast_s_mp_sqr         uintptr
	tclBN_mp_karatsuba_mul      uintptr
	tclBN_mp_karatsuba_sqr      uintptr
	tclBN_mp_toom_mul           uintptr
	tclBN_mp_toom_sqr           uintptr
	tclBN_s_mp_add              uintptr
	tclBN_s_mp_mul_digs         uintptr
	tclBN_s_mp_sqr              uintptr
	tclBN_s_mp_sub              uintptr
	tclBN_mp_init_set_int       uintptr
	tclBN_mp_set_int            uintptr
	tclBN_mp_cnt_lsb            uintptr
	tclBNInitBignumFromLong     uintptr
	tclBNInitBignumFromWideInt  uintptr
	tclBNInitBignumFromWideUInt uintptr
	tclBN_mp_expt_d_ex          uintptr
	tclBN_mp_set_ull            uintptr
	reserved69                  uintptr
	reserved70                  uintptr
	reserved71                  uintptr
	reserved72                  uintptr
	tclBN_mp_tc_and             uintptr
	tclBN_mp_tc_or              uintptr
	tclBN_mp_tc_xor             uintptr
	tclBN_mp_signed_rsh         uintptr
	reserved77                  uintptr
	tclBN_mp_to_ubin            uintptr
	reserved79                  uintptr
	tclBN_mp_to_radix           uintptr
} /* tclTomMathDecls.h:351:9 */

type TclTomMathStubs = TclTomMathStubs1 /* tclTomMathDecls.h:436:3 */

// These are opaque types.

type Tcl_Class = uintptr         /* tclOO.h:52:27 */
type Tcl_Method = uintptr        /* tclOO.h:53:28 */
type Tcl_Object = uintptr        /* tclOO.h:54:28 */
type Tcl_ObjectContext = uintptr /* tclOO.h:55:35 */

// The type of a method implementation. This describes how to call the method
// implementation, how to delete it (when the object or class is deleted) and
// how to create a clone of it (when the object or class is copied).

type Tcl_MethodType = struct {
	version    int32
	name       uintptr
	callProc   uintptr
	deleteProc uintptr
	cloneProc  uintptr
} /* tclOO.h:93:3 */

// The correct value for the version field of the Tcl_MethodType structure.
// This allows new versions of the structure to be introduced without breaking
// binary compatability.

// The type of some object (or class) metadata. This describes how to delete
// the metadata (when the object or class is deleted) and how to create a
// clone of it (when the object or class is copied).

type Tcl_ObjectMetadataType = struct {
	version    int32
	name       uintptr
	deleteProc uintptr
	cloneProc  uintptr
} /* tclOO.h:120:3 */

type TclOOIntStubs1 = struct {
	magic                         int32
	hooks                         uintptr
	tclOOGetDefineCmdContext      uintptr
	tclOOMakeProcInstanceMethod   uintptr
	tclOOMakeProcMethod           uintptr
	tclOONewProcInstanceMethod    uintptr
	tclOONewProcMethod            uintptr
	tclOOObjectCmdCore            uintptr
	tclOOIsReachable              uintptr
	tclOONewForwardMethod         uintptr
	tclOONewForwardInstanceMethod uintptr
	tclOONewProcInstanceMethodEx  uintptr
	tclOONewProcMethodEx          uintptr
	tclOOInvokeObject             uintptr
	tclOOObjectSetFilters         uintptr
	tclOOClassSetFilters          uintptr
	tclOOObjectSetMixins          uintptr
	tclOOClassSetMixins           uintptr
} /* tclOODecls.h:121:11 */

type TclOOStubHooks = struct{ tclOOIntStubs uintptr } /* tclOODecls.h:122:3 */

type TclOOStubs1 = struct {
	magic                         int32
	hooks                         uintptr
	tcl_CopyObjectInstance        uintptr
	tcl_GetClassAsObject          uintptr
	tcl_GetObjectAsClass          uintptr
	tcl_GetObjectCommand          uintptr
	tcl_GetObjectFromObj          uintptr
	tcl_GetObjectNamespace        uintptr
	tcl_MethodDeclarerClass       uintptr
	tcl_MethodDeclarerObject      uintptr
	tcl_MethodIsPublic            uintptr
	tcl_MethodIsType              uintptr
	tcl_MethodName                uintptr
	tcl_NewInstanceMethod         uintptr
	tcl_NewMethod                 uintptr
	tcl_NewObjectInstance         uintptr
	tcl_ObjectDeleted             uintptr
	tcl_ObjectContextIsFiltering  uintptr
	tcl_ObjectContextMethod       uintptr
	tcl_ObjectContextObject       uintptr
	tcl_ObjectContextSkippedArgs  uintptr
	tcl_ClassGetMetadata          uintptr
	tcl_ClassSetMetadata          uintptr
	tcl_ObjectGetMetadata         uintptr
	tcl_ObjectSetMetadata         uintptr
	tcl_ObjectContextInvokeNext   uintptr
	tcl_ObjectGetMethodNameMapper uintptr
	tcl_ObjectSetMethodNameMapper uintptr
	tcl_ClassSetConstructor       uintptr
	tcl_ClassSetDestructor        uintptr
	tcl_GetObjectName             uintptr
} /* tclOODecls.h:124:9 */

type TclOOStubs = TclOOStubs1 /* tclOODecls.h:157:3 */

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Hack to make things work with Objective C. Note that ObjC isn't really
// supported, but we don't want to to be actively hostile to it. [Bug 2163447]

// Forward declarations.

type CallChain1 = struct {
	objectCreationEpoch int32
	objectEpoch         int32
	epoch               int32
	flags               int32
	refCount            int32
	numChain            int32
	chain               uintptr
	staticChain         [4]struct {
		mPtr           uintptr
		isFilter       int32
		filterDeclarer uintptr
	}
} /* tclOOInt.h:33:1 */

type Class1 = struct {
	thisPtr      uintptr
	flags        int32
	superclasses struct {
		num  int32
		list uintptr
	}
	subclasses struct {
		num  int32
		size int32
		list uintptr
	}
	instances struct {
		num  int32
		size int32
		list uintptr
	}
	filters struct {
		num  int32
		list uintptr
	}
	mixins struct {
		num  int32
		list uintptr
	}
	mixinSubs struct {
		num  int32
		size int32
		list uintptr
	}
	classMethods        Tcl_HashTable
	constructorPtr      uintptr
	destructorPtr       uintptr
	metadataPtr         uintptr
	constructorChainPtr uintptr
	destructorChainPtr  uintptr
	classChainCache     uintptr
	variables           struct {
		num  int32
		list uintptr
	}
} /* tclOOInt.h:33:1 */

type Foundation1 = struct {
	interp               uintptr
	objectCls            uintptr
	classCls             uintptr
	ooNs                 uintptr
	defineNs             uintptr
	objdefNs             uintptr
	helpersNs            uintptr
	epoch                int32
	tsdPtr               uintptr
	unknownMethodNameObj uintptr
	constructorName      uintptr
	destructorName       uintptr
	clonedName           uintptr
	defineName           uintptr
} /* tclOOInt.h:33:1 */

type Object1 = struct {
	fPtr         uintptr
	namespacePtr uintptr
	command      Tcl_Command
	myCommand    Tcl_Command
	selfCls      uintptr
	methodsPtr   uintptr
	mixins       struct {
		num  int32
		list uintptr
	}
	filters struct {
		num  int32
		list uintptr
	}
	classPtr          uintptr
	refCount          int32
	flags             int32
	creationEpoch     int32
	epoch             int32
	metadataPtr       uintptr
	cachedNameObj     uintptr
	chainCache        uintptr
	mapMethodNameProc uintptr
	variables         struct {
		num  int32
		list uintptr
	}
} /* tclOOInt.h:33:1 */

// The data that needs to be stored per method. This record is used to collect
// information about all sorts of methods, including forwards, constructors
// and destructors.

type Method1 = struct {
	typePtr            uintptr
	refCount           int32
	clientData         ClientData
	namePtr            uintptr
	declaringObjectPtr uintptr
	declaringClassPtr  uintptr
	flags              int32
} /* tclOOInt.h:33:1 */

// The data that needs to be stored per method. This record is used to collect
// information about all sorts of methods, including forwards, constructors
// and destructors.

type Method = Method1 /* tclOOInt.h:61:3 */

// Procedure-like methods have the following extra information.

type ProcedureMethod1 = struct {
	version              int32
	procPtr              uintptr
	flags                int32
	refCount             int32
	clientData           ClientData
	deleteClientdataProc uintptr
	cloneClientdataProc  uintptr
	errProc              uintptr
	preCallProc          uintptr
	postCallProc         uintptr
	gfivProc             uintptr
} /* tclOOInt.h:79:9 */

// Procedure-like methods have the following extra information.

type ProcedureMethod = ProcedureMethod1 /* tclOOInt.h:100:3 */

// Flags for use in a ProcedureMethod.
//
// When the USE_DECLARER_NS flag is set, the method will use the namespace of
// the object or class that declared it (or the clone of it, if it was from
// such that the implementation of the method came to the particular use)
// instead of the namespace of the object on which the method was invoked.
// This flag must be distinct from all others that are associated with
// methods.

// Forwarded methods have the following extra information.

type ForwardMethod1 = struct{ prefixObj uintptr } /* tclOOInt.h:121:9 */

// Flags for use in a ProcedureMethod.
//
// When the USE_DECLARER_NS flag is set, the method will use the namespace of
// the object or class that declared it (or the clone of it, if it was from
// such that the implementation of the method came to the particular use)
// instead of the namespace of the object on which the method was invoked.
// This flag must be distinct from all others that are associated with
// methods.

// Forwarded methods have the following extra information.

type ForwardMethod = ForwardMethod1 /* tclOOInt.h:125:3 */

// Helper definitions that declare a "list" array. The two varieties are
// either optimized for simplicity (in the case that the whole array is
// typically assigned at once) or efficiency (in the case that the array is
// expected to be expanded over time). These lists are designed to be iterated
// over with the help of the FOREACH macro (see later in this file).
//
// The "num" field always counts the number of listType_t elements used in the
// "list" field. When a "size" field exists, it describes how many elements
// are present in the list; when absent, exactly "num" elements are present.

// Now, the definition of what an object actually is.

type Object = Object1 /* tclOOInt.h:190:3 */

// And the definition of a class. Note that every class also has an associated
// object, through which it is manipulated.

type Class = Class1 /* tclOOInt.h:270:3 */

// The foundation of the object system within an interpreter contains
// references to the key classes and namespaces, together with a few other
// useful bits and pieces. Probably ought to eventually go in the Interp
// structure itself.

type ThreadLocalData1 = struct{ nsCount int32 } /* tclOOInt.h:33:1 */

// The foundation of the object system within an interpreter contains
// references to the key classes and namespaces, together with a few other
// useful bits and pieces. Probably ought to eventually go in the Interp
// structure itself.

type ThreadLocalData = ThreadLocalData1 /* tclOOInt.h:286:3 */

type Foundation = Foundation1 /* tclOOInt.h:318:3 */

// A call context structure is built when a method is called. It contains the
// chain of method implementations that are to be invoked by a particular
// call, and the process of calling walks the chain, with the [next] command
// proceeding to the next entry in the chain.

type MInvoke = struct {
	mPtr           uintptr
	isFilter       int32
	filterDeclarer uintptr
} /* tclOOInt.h:33:1 */

type CallChain = CallChain1 /* tclOOInt.h:352:3 */

type CallContext1 = struct {
	oPtr    uintptr
	index   int32
	skip    int32
	callPtr uintptr
} /* tclOOInt.h:354:9 */

type CallContext = CallContext1 /* tclOOInt.h:363:3 */

// Bits for the 'flags' field of the call chain.

// Structure containing definition information about basic class methods.

type DeclaredClassMethod = struct {
	name       uintptr
	isPublic   int32
	definition Tcl_MethodType
} /* tclOOInt.h:384:3 */

type TclOOIntStubs = TclOOIntStubs1 /* tclOOIntDecls.h:115:3 */

var tclOOStubsPtr uintptr = uintptr(0)    /* tclOOStubLib.c:10:18 */
var tclOOIntStubsPtr uintptr = uintptr(0) /* tclOOStubLib.c:11:21 */

//----------------------------------------------------------------------
//
// TclOOInitializeStubs --
//	Load the tclOO package, initialize stub table pointer. Do not call
//	this function directly, use Tcl_OOInitStubs() macro instead.
//
// Results:
//	The actual version of the package that satisfies the request, or NULL
//	to indicate that an error occurred.
//
// Side effects:
//	Sets the stub table pointers.
//
//----------------------------------------------------------------------

func TclOOInitializeStubs(tls *libc.TLS, interp uintptr, version uintptr) uintptr { /* tclOOStubLib.c:32:25: */
	bp := tls.Alloc(84)
	defer tls.Free(84)

	var exact int32 = 0
	var packageName uintptr = ts /* "TclOO" */
	var errMsg uintptr = uintptr(0)
	*(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)) = uintptr(0)
	var actualVersion uintptr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 12)))(tls, interp,
		packageName, version, exact, bp+80)

	if actualVersion == uintptr(0) {
		return uintptr(0)
	}
	if *(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)) == uintptr(0) {
		errMsg = ts + 6 /* "missing stub tab..." */
	} else {
		tclOOStubsPtr = *(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */))
		if (*TclOOStubs)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)))).hooks != 0 {
			tclOOIntStubsPtr = (*TclOOStubHooks)(unsafe.Pointer((*TclOOStubs)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)))).hooks)).tclOOIntStubs
		} else {
			tclOOIntStubsPtr = uintptr(0)
		}
		return actualVersion
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+33, packageName,
		ts+48 /* " (requested vers..." */, version, ts+69, /* ", actual version..." */
		actualVersion, ts+87 /* "): " */, errMsg, uintptr(0)))
	return uintptr(0)
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

var tclStubsPtr uintptr = uintptr(0)        /* tclStubLib.c:21:16 */
var tclPlatStubsPtr uintptr = uintptr(0)    /* tclStubLib.c:22:20 */
var tclIntStubsPtr uintptr = uintptr(0)     /* tclStubLib.c:23:19 */
var tclIntPlatStubsPtr uintptr = uintptr(0) /* tclStubLib.c:24:23 */

// Use our own isDigit to avoid linking to libc on windows

func isDigit(tls *libc.TLS, c int32) int32 { /* tclStubLib.c:30:12: */
	return libc.Bool32(c >= '0' && c <= '9')
}

//----------------------------------------------------------------------
//
// Tcl_InitStubs --
//
//	Tries to initialise the stub table pointers and ensures that the
//	correct version of Tcl is loaded.
//
// Results:
//	The actual version of Tcl that satisfies the request, or NULL to
//	indicate that an error occurred.
//
// Side effects:
//	Sets the stub table pointers.
//
//----------------------------------------------------------------------
func Tcl_InitStubs(tls *libc.TLS, interp uintptr, version uintptr, exact int32) uintptr { /* tclStubLib.c:53:25: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var iPtr uintptr = interp
	var actualVersion uintptr = uintptr(0)
	*(*ClientData)(unsafe.Pointer(bp /* pkgData */)) = uintptr(0)
	var stubsPtr uintptr = (*Interp)(unsafe.Pointer(iPtr)).stubTable

	// We can't optimize this check by caching tclStubsPtr because that
	// prevents apps from being able to load/unload Tcl dynamically multiple
	// times. [Bug 615304]

	if !(stubsPtr != 0) || (*TclStubs)(unsafe.Pointer(stubsPtr)).magic != libc.Int32FromUint32(0xFCA3BACF) {
		(*Interp)(unsafe.Pointer(iPtr)).result = ts + 91 /* "interpreter uses..." */
		(*Interp)(unsafe.Pointer(iPtr)).freeProc = uintptr(0)
		return uintptr(0)
	}

	actualVersion = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(stubsPtr + 12)))(tls, interp, ts+140, version, 0, bp)
	if actualVersion == uintptr(0) {
		return uintptr(0)
	}
	if exact != 0 {
		var p uintptr = version
		var count int32 = 0

		for *(*int8)(unsafe.Pointer(p)) != 0 {
			count = count + libc.BoolInt32(!(isDigit(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))))) != 0))
		}
		if count == 1 {
			var q uintptr = actualVersion

			p = version
			for *(*int8)(unsafe.Pointer(p)) != 0 && int32(*(*int8)(unsafe.Pointer(p))) == int32(*(*int8)(unsafe.Pointer(q))) {
				p++
				q++
			}
			if *(*int8)(unsafe.Pointer(p)) != 0 || isDigit(tls, int32(*(*int8)(unsafe.Pointer(q)))) != 0 {
				// Construct error message
				(*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(stubsPtr + 12)))(tls, interp, ts+140, version, 1, uintptr(0))
				return uintptr(0)
			}
		} else {
			actualVersion = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(stubsPtr + 12)))(tls, interp, ts+140, version, 1, uintptr(0))
			if actualVersion == uintptr(0) {
				return uintptr(0)
			}
		}
	}
	tclStubsPtr = *(*ClientData)(unsafe.Pointer(bp /* pkgData */))

	if (*TclStubs)(unsafe.Pointer(tclStubsPtr)).hooks != 0 {
		tclPlatStubsPtr = (*TclStubHooks)(unsafe.Pointer((*TclStubs)(unsafe.Pointer(tclStubsPtr)).hooks)).tclPlatStubs
		tclIntStubsPtr = (*TclStubHooks)(unsafe.Pointer((*TclStubs)(unsafe.Pointer(tclStubsPtr)).hooks)).tclIntStubs
		tclIntPlatStubsPtr = (*TclStubHooks)(unsafe.Pointer((*TclStubs)(unsafe.Pointer(tclStubsPtr)).hooks)).tclIntPlatStubs
	} else {
		tclPlatStubsPtr = uintptr(0)
		tclIntStubsPtr = uintptr(0)
		tclIntPlatStubsPtr = uintptr(0)
	}

	return actualVersion
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

var tclTomMathStubsPtr uintptr = uintptr(0) /* tclTomMathStubLib.c:18:23 */

//----------------------------------------------------------------------
//
// TclTomMathInitStubs --
//
//	Initializes the Stubs table for Tcl's subset of libtommath
//
// Results:
//	Returns a standard Tcl result.
//
// This procedure should not be called directly, but rather through
// the TclTomMath_InitStubs macro, to insure that the Stubs table
// matches the header files used in compilation.
//
//----------------------------------------------------------------------

func TclTomMathInitializeStubs(tls *libc.TLS, interp uintptr, version uintptr, epoch int32, revision int32) uintptr { /* tclTomMathStubLib.c:38:25: */
	bp := tls.Alloc(84)
	defer tls.Free(84)

	var exact int32 = 0
	var packageName uintptr = ts + 144 /* "tcl::tommath" */
	var errMsg uintptr = uintptr(0)
	*(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)) = uintptr(0)
	var actualVersion uintptr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 12)))(tls, interp,
		packageName, version, exact, bp+80)

	if actualVersion == uintptr(0) {
		return uintptr(0)
	}
	if *(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */)) == uintptr(0) {
		errMsg = ts + 6 /* "missing stub tab..." */
	} else if (*(*func(*libc.TLS) int32)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + 8)))(tls) != epoch {
		errMsg = ts + 157 /* "epoch number mis..." */
	} else if (*(*func(*libc.TLS) int32)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + 12)))(tls) != revision {
		errMsg = ts + 179 /* "requires a later..." */
	} else {
		tclTomMathStubsPtr = *(*uintptr)(unsafe.Pointer(bp + 80 /* stubsPtr */))
		return actualVersion
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+33, packageName,
		ts+48 /* " (requested vers..." */, version, ts+69, /* ", actual version..." */
		actualVersion, ts+87 /* "): " */, errMsg, uintptr(0)))
	return uintptr(0)
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Inline function declarations:

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _exception = struct {
	__type int32
	name   uintptr
	arg1   float64
	arg2   float64
	retval float64
} /* math.h:15:1 */

// See also float.h

// IEEE float/double type shapes.

type __mingw_dbl_type_t = struct{ x float64 } /* math.h:119:11 */

type __mingw_flt_type_t = struct{ x float32 } /* math.h:127:11 */

type __mingw_ldbl_type_t = struct {
	x float64
	_ [8]byte
} /* math.h:132:11 */

type __mingw_fp_types_t = struct{ ld uintptr } /* math.h:143:11 */

type _complex = struct {
	x float64
	y float64
} /* math.h:270:3 */

// Use the compiler's builtin define for FLT_EVAL_METHOD to
//    set float_t and double_t.
type float_t = float64  /* math.h:378:21 */
type double_t = float64 /* math.h:379:21 */

// Documentation on decimal float math
//    http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801?ciid=8cf166fedd1aa110VgnVCM100000a360ea10RCRD
//

// Required for Testregexp*Cmd
// tclRegexp.h --
//
//	This file contains definitions used internally by Henry Spencer's
//	regular expression code.
//
// Copyright (c) 1998 by Sun Microsystems, Inc.
// Copyright (c) 1998-1999 by Scriptics Corporation.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// tclInt.h --
//
//	Declarations of things used internally by the Tcl interpreter.
//
// Copyright (c) 1987-1993 The Regents of the University of California.
// Copyright (c) 1993-1997 Lucent Technologies.
// Copyright (c) 1994-1998 Sun Microsystems, Inc.
// Copyright (c) 1998-1999 by Scriptics Corporation.
// Copyright (c) 2001, 2002 by Kevin B. Kenny.  All rights reserved.
// Copyright (c) 2007 Daniel A. Steffen <das@users.sourceforge.net>
// Copyright (c) 2006-2008 by Joe Mistachkin.  All rights reserved.
// Copyright (c) 2008 by Miguel Sofer. All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// regular expressions
//
// Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
//
// Development of this software was funded, in part, by Cray Research Inc.,
// UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
// Corporation, none of whom are responsible for the results. The author
// thanks all of them.
//
// Redistribution and use in source and binary forms -- with or without
// modification -- are permitted for any purpose, provided that
// redistributions in source form retain this entire copyright notice and
// indicate the origin and nature of any modifications.
//
// I'd appreciate being given credit for this package in the documentation of
// software which uses it, but that is not a requirement.
//
// THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
// INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
// HENRY SPENCER BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//
// Prototypes etc. marked with "^" within comments get gathered up (and
// possibly edited) by the regfwd program and inserted near the bottom of this
// file.
//
// We offer the option of declaring one wide-character version of the RE
// functions as well as the char versions. To do that, define __REG_WIDE_T to
// the type of wide characters (unfortunately, there is no consensus that
// wchar_t is suitable) and __REG_WIDE_COMPILE and __REG_WIDE_EXEC to the
// names to be used for the compile and execute functions (suggestion:
// re_Xcomp and re_Xexec, where X is a letter suggestive of the wide type,
// e.g. re_ucomp and re_uexec for Unicode). For cranky old compilers, it may
// be necessary to do something like:
// #define	__REG_WIDE_COMPILE(a,b,c,d)	re_Xcomp(a,b,c,d)
// #define	__REG_WIDE_EXEC(a,b,c,d,e,f,g)	re_Xexec(a,b,c,d,e,f,g)
// rather than just #defining the names as parameterless macros.
//
// For some specialized purposes, it may be desirable to suppress the
// declarations of the "front end" functions, regcomp() and regexec(), or of
// the char versions of the compile and execute functions. To suppress the
// front-end functions, define __REG_NOFRONT. To suppress the char versions,
// define __REG_NOCHAR.
//
// The right place to do those defines (and some others you may want, see
// below) would be <sys/types.h>. If you don't have control of that file, the
// right place to add your own defines to this file is marked below. This is
// normally done automatically, by the makefile and regmkhdr, based on the
// contents of regcustom.h.

// voodoo for C++

// Add your own defines, if needed, here.

// Location where a chunk of regcustom.h is automatically spliced into this
// file (working from its prototype, regproto.h).

// --- begin ---
// ensure certain things don't sneak in from system headers
// interface types
// names and declarations
// --- end ---

// interface types etc.

// regoff_t has to be large enough to hold either off_t or ssize_t, and must
// be signed; it's only a guess that long is suitable, so we offer
// <sys/types.h> an override.
type regoff_t = int32 /* regex.h:123:24 */

// other interface types

// the biggie, a compiled RE (or rather, a front end to same)
type regex_t = struct {
	re_magic int32
	re_nsub  size_t
	re_info  int32
	re_csize int32
	re_endp  uintptr
	re_guts  uintptr
	re_fns   uintptr
} /* regex.h:156:3 */

// result reporting (may acquire more fields later)
type regmatch_t = struct {
	rm_so regoff_t
	rm_eo regoff_t
} /* regex.h:162:3 */

// supplementary control and reporting
type rm_detail_t = struct{ rm_extend regmatch_t } /* regex.h:167:3 */
// automatically gathered by fwd; do not hand-edit
// =====^!^===== end forwards =====^!^=====

// more C++ voodoo

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// The TclRegexp structure encapsulates a compiled regex_t, the flags that
// were used to compile it, and an array of pointers that are used to indicate
// subexpressions after a call to Tcl_RegExpExec. Note that the string and
// objPtr are mutually exclusive. These values are needed by Tcl_RegExpRange
// in order to return pointers into the original string.

type TclRegexp1 = struct {
	flags      int32
	re         regex_t
	string     uintptr
	objPtr     uintptr
	globObjPtr uintptr
	matches    uintptr
	details    rm_detail_t
	refCount   int32
} /* tclRegexp.h:27:9 */

// automatically gathered by fwd; do not hand-edit
// =====^!^===== end forwards =====^!^=====

// more C++ voodoo

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// The TclRegexp structure encapsulates a compiled regex_t, the flags that
// were used to compile it, and an array of pointers that are used to indicate
// subexpressions after a call to Tcl_RegExpExec. Note that the string and
// objPtr are mutually exclusive. These values are needed by Tcl_RegExpRange
// in order to return pointers into the original string.

type TclRegexp = TclRegexp1 /* tclRegexp.h:42:3 */

// Required for the TestChannelCmd and TestChannelEventCmd
// tclIO.h --
//
//	This file provides the generic portions (those that are the same on
//	all platforms and for all channel types) of Tcl's IO facilities.
//
// Copyright (c) 1998-2000 Ajuba Solutions
// Copyright (c) 1995-1997 Sun Microsystems, Inc.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Make sure that both EAGAIN and EWOULDBLOCK are defined. This does not
// compile on systems where neither is defined. We want both defined so that
// we can test safely for both. In the code we still have to test for both
// because there may be systems on which both are defined and have different
// values.

// struct ChannelBuffer:
//
// Buffers data being sent to or from a channel.

type ChannelBuffer1 = struct {
	refCount    int32
	nextAdded   int32
	nextRemoved int32
	bufLength   int32
	nextPtr     uintptr
	buf         [1]int8
	_           [3]byte
} /* tclIO.h:38:9 */

// Required for the TestChannelCmd and TestChannelEventCmd
// tclIO.h --
//
//	This file provides the generic portions (those that are the same on
//	all platforms and for all channel types) of Tcl's IO facilities.
//
// Copyright (c) 1998-2000 Ajuba Solutions
// Copyright (c) 1995-1997 Sun Microsystems, Inc.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Make sure that both EAGAIN and EWOULDBLOCK are defined. This does not
// compile on systems where neither is defined. We want both defined so that
// we can test safely for both. In the code we still have to test for both
// because there may be systems on which both are defined and have different
// values.

// struct ChannelBuffer:
//
// Buffers data being sent to or from a channel.

type ChannelBuffer = ChannelBuffer1 /* tclIO.h:51:3 */

// How much extra space to allocate in buffer to hold bytes from previous
// buffer (when converting to UTF-8) or to hold bytes that will go to next
// buffer (when converting from UTF-8).

// The following defines the *default* buffer size for channels.

// The following structure describes the information saved from a call to
// "fileevent". This is used later when the event being waited for to invoke
// the saved script in the interpreter designed in this record.

type EventScriptRecord1 = struct {
	chanPtr   uintptr
	scriptPtr uintptr
	interp    uintptr
	mask      int32
	nextPtr   uintptr
} /* tclIO.h:75:9 */

// How much extra space to allocate in buffer to hold bytes from previous
// buffer (when converting to UTF-8) or to hold bytes that will go to next
// buffer (when converting from UTF-8).

// The following defines the *default* buffer size for channels.

// The following structure describes the information saved from a call to
// "fileevent". This is used later when the event being waited for to invoke
// the saved script in the interpreter designed in this record.

type Channel1 = struct {
	state        uintptr
	instanceData ClientData
	typePtr      uintptr
	downChanPtr  uintptr
	upChanPtr    uintptr
	inQueueHead  uintptr
	inQueueTail  uintptr
	refCount     int32
} /* tclIO.h:75:9 */

// How much extra space to allocate in buffer to hold bytes from previous
// buffer (when converting to UTF-8) or to hold bytes that will go to next
// buffer (when converting from UTF-8).

// The following defines the *default* buffer size for channels.

// The following structure describes the information saved from a call to
// "fileevent". This is used later when the event being waited for to invoke
// the saved script in the interpreter designed in this record.

type EventScriptRecord = EventScriptRecord1 /* tclIO.h:86:3 */

// struct Channel:
//
// One of these structures is allocated for each open channel. It contains
// data specific to the channel but which belongs to the generic part of the
// Tcl channel mechanism, and it points at an instance specific (and type
// specific) instance data, and at a channel type structure.

type ChannelState1 = struct {
	channelName         uintptr
	flags               int32
	encoding            Tcl_Encoding
	inputEncodingState  Tcl_EncodingState
	inputEncodingFlags  int32
	outputEncodingState Tcl_EncodingState
	outputEncodingFlags int32
	inputTranslation    TclEolTranslation
	outputTranslation   TclEolTranslation
	inEofChar           int32
	outEofChar          int32
	unreportedError     int32
	refCount            int32
	closeCbPtr          uintptr
	outputStage         uintptr
	curOutPtr           uintptr
	outQueueHead        uintptr
	outQueueTail        uintptr
	saveInBufPtr        uintptr
	inQueueHead         uintptr
	inQueueTail         uintptr
	chPtr               uintptr
	interestMask        int32
	scriptRecordPtr     uintptr
	bufSize             int32
	timer               Tcl_TimerToken
	csPtrR              uintptr
	csPtrW              uintptr
	topChanPtr          uintptr
	bottomChanPtr       uintptr
	nextCSPtr           uintptr
	managingThread      Tcl_ThreadId
	chanMsg             uintptr
	unreportedMsg       uintptr
	epoch               int32
} /* tclIO.h:75:9 */

// struct Channel:
//
// One of these structures is allocated for each open channel. It contains
// data specific to the channel but which belongs to the generic part of the
// Tcl channel mechanism, and it points at an instance specific (and type
// specific) instance data, and at a channel type structure.

type Channel = Channel1 /* tclIO.h:117:3 */

// struct ChannelState:
//
// One of these structures is allocated for each open channel. It contains
// data specific to the channel but which belongs to the generic part of the
// Tcl channel mechanism, and it points at an instance specific (and type
// specific) instance data, and at a channel type structure.

type ChannelState = ChannelState1 /* tclIO.h:219:3 */

// Dynamic string shared by TestdcallCmd and DelCallbackProc; used to collect
// the results of the various deletion callbacks.

var delString Tcl_DString /* tclTest.c:61:20: */
var delInterp uintptr     /* tclTest.c:62:19: */

// One of the following structures exists for each asynchronous handler
// created by the "testasync" command".

type TestAsyncHandler1 = struct {
	id      int32
	handler Tcl_AsyncHandler
	command uintptr
	nextPtr uintptr
} /* tclTest.c:69:9 */

// One of the following structures exists for each asynchronous handler
// created by the "testasync" command".

type TestAsyncHandler = TestAsyncHandler1 /* tclTest.c:76:3 */

var firstHandler uintptr = uintptr(0) /* tclTest.c:80:25 */

// The dynamic string below is used by the "testdstring" command to test the
// dynamic string facilities.

var dstring Tcl_DString /* tclTest.c:87:20: */

// The command trace below is used by the "testcmdtraceCmd" command to test
// the command tracing facilities.

var cmdTrace Tcl_Trace /* tclTest.c:94:18: */

// One of the following structures exists for each command created by
// TestdelCmd:

type DelCmd1 = struct {
	interp    uintptr
	deleteCmd uintptr
} /* tclTest.c:101:9 */

// One of the following structures exists for each command created by
// TestdelCmd:

type DelCmd = DelCmd1 /* tclTest.c:105:3 */

// The following is used to keep track of an encoding that invokes a Tcl
// command.

type TclEncoding1 = struct {
	interp     uintptr
	toUtfCmd   uintptr
	fromUtfCmd uintptr
} /* tclTest.c:112:9 */

// The following is used to keep track of an encoding that invokes a Tcl
// command.

type TclEncoding = TclEncoding1 /* tclTest.c:116:3 */

// The counter below is used to determine if the TestsaveresultFree routine
// was called for a result.

var freeCount int32 /* tclTest.c:123:12: */

// Boolean flag used by the "testsetmainloop" and "testexitmainloop" commands.

var exitMainLoop int32 = 0 /* tclTest.c:129:12 */

// Event structure used in testing the event queue management procedures.

type TestEvent1 = struct {
	header  Tcl_Event
	interp  uintptr
	command uintptr
	tag     uintptr
} /* tclTest.c:135:9 */

// Event structure used in testing the event queue management procedures.

type TestEvent = TestEvent1 /* tclTest.c:140:3 */

// Simple detach/attach facility for testchannel cut|splice. Allow testing of
// channel transfer in core testsuite.

type TestChannel1 = struct {
	__chan  Tcl_Channel
	nextPtr uintptr
} /* tclTest.c:147:9 */

// Simple detach/attach facility for testchannel cut|splice. Allow testing of
// channel transfer in core testsuite.

type TestChannel = TestChannel1 /* tclTest.c:150:3 */

var firstDetached uintptr /* tclTest.c:152:20: */

var testReportingFilesystem = Tcl_Filesystem{
	typeName:             ts + 205, /* "reporting" */
	structureLength:      int32(unsafe.Sizeof(Tcl_Filesystem{})),
	version:              uintptr(0x1),
	pathInFilesystemProc: 0,
	dupInternalRepProc:// path in
	0,
	freeInternalRepProc:      0,
	internalToNormalizedProc: uintptr(0),
	createInternalRepProc:// native to norm
	uintptr(0),
	normalizePathProc:// convert to native
	0,
	filesystemPathTypeProc: uintptr(0),
	filesystemSeparatorProc:// path type
	uintptr(0),
	statProc:// separator
	0,
	accessProc:           0,
	openFileChannelProc:  0,
	matchInDirectoryProc: 0,
	utimeProc:            0,
	linkProc:             0,
	listVolumesProc:      uintptr(0),
	fileAttrStringsProc:  0,
	fileAttrsGetProc:     0,
	fileAttrsSetProc:     0,
	createDirectoryProc:  0,
	removeDirectoryProc:  0,
	deleteFileProc:       0,
	copyFileProc:         0,
	renameFileProc:       0,
	copyDirectoryProc:    0,
	lstatProc:            0,
	loadFileProc:         0,
	getCwdProc:           uintptr(0),
	chdirProc:            0,
} /* tclTest.c:442:29 */

var simpleFilesystem = Tcl_Filesystem{
	typeName:             ts + 215, /* "simple" */
	structureLength:      int32(unsafe.Sizeof(Tcl_Filesystem{})),
	version:              uintptr(0x1),
	pathInFilesystemProc: 0,
	dupInternalRepProc:   uintptr(0),
	freeInternalRepProc:  uintptr(0),
	internalToNormalizedProc:
	// No internal to normalized, since we don't create any
	// pure 'internal' Tcl_Obj path representations
	uintptr(0),
	createInternalRepProc:
	// No create native rep function, since we don't use it
	// or 'Tcl_FSNewNativePath'
	uintptr(0),
	normalizePathProc:
	// Normalize path isn't needed - we assume paths only have
	// one representation
	uintptr(0),
	filesystemPathTypeProc:  uintptr(0),
	filesystemSeparatorProc: uintptr(0),
	statProc:                0,
	accessProc:              0,
	openFileChannelProc:     0,
	matchInDirectoryProc:    0,
	utimeProc:               uintptr(0),
	linkProc:
	// We choose not to support symbolic links inside our vfs's
	uintptr(0),
	listVolumesProc:     0,
	fileAttrStringsProc: uintptr(0),
	fileAttrsGetProc:    uintptr(0),
	fileAttrsSetProc:    uintptr(0),
	createDirectoryProc: uintptr(0),
	removeDirectoryProc: uintptr(0),
	deleteFileProc:      uintptr(0),
	copyFileProc:
	// No copy file - fallback will occur at Tcl level
	uintptr(0),
	renameFileProc:
	// No rename file - fallback will occur at Tcl level
	uintptr(0),
	copyDirectoryProc:
	// No copy directory - fallback will occur at Tcl level
	uintptr(0),
	lstatProc:
	// Use stat for lstat
	uintptr(0),
	loadFileProc:
	// No load - fallback on core implementation
	uintptr(0),
	getCwdProc:
	// We don't need a getcwd or chdir - fallback on Tcl's versions
	uintptr(0),
	chdirProc: uintptr(0),
} /* tclTest.c:476:29 */

//----------------------------------------------------------------------
//
// Tcltest_Init --
//
//	This procedure performs application-specific initialization. Most
//	applications, especially those that incorporate additional packages,
//	will have their own version of this procedure.
//
// Results:
//	Returns a standard Tcl completion code, and leaves an error message in
//	the interp's result if an error occurs.
//
// Side effects:
//	Depends on the startup script.
//
//----------------------------------------------------------------------

func Tcltest_Init(tls *libc.TLS, interp uintptr) int32 { /* tclTest.c:544:1: */
	bp := tls.Alloc(24)
	defer tls.Free(24)

	// var t3ArgTypes [2]Tcl_ValueType at bp, 8

	var listPtr uintptr
	// var objv uintptr at bp+12, 4

	// var objc int32 at bp+8, 4

	// var index int32 at bp+16, 4

	if Tcl_InitStubs(tls, interp, ts+222 /* "8.5" */, 0) == uintptr(0) {
		return 1
	}
	if TclTomMathInitializeStubs(tls, interp, ts+222, 0, 0) == uintptr(0) {
		return 1
	}
	if TclOOInitializeStubs(tls, interp, ts+226 /* "1.1.0" */) == uintptr(0) {
		return 1
	}
	// TIP #268: Full patchlevel instead of just major.minor

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 8)))(tls, interp, ts+232, ts+240, uintptr(0)) == 1 {
		return 1
	}

	// Create additional commands and math functions for testing Tcl.

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+247, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{GetTimesObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+256, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{NoopCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+256, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{NoopObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+261, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestpurebytesobjObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+278, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestbytestringObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+293, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestWrongNumArgsObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+310, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestFilesystemObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+325, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestSimpleFilesystemObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+346,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestGetIndexFromObjStructObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+372, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestasyncCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+382,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestbumpinterpepochObjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+402, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestChannelCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+414, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestChannelEventCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+431, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestcmdtokenCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+444, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestcmdinfoCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+456, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestcmdtraceCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+469, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestconcatobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+483, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestcreatecommandCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+501, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdcallCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+511, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdelCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+519, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdelassocdataCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+536, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdoubledigitsObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, uintptr(unsafe.Pointer(&dstring)))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+553, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdstringCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+565, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestencodingObjCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+578, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestevalexObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+589, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestevalobjvObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+602, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TesteventObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+612, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexithandlerCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+628, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprlongCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+641, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprlongobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+657, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprdoubleCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+672, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprdoubleobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+690, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprparserObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+705, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexprstringCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+720, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestfeventCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+731, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestfilelinkCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+744, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestfileCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+753,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestHashSystemHashCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+772, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestgetassocdataCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+789, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestgetintCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+800, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestgetplatformCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+816,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestgetvarfullnameCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+835, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestinterpdeleteCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+852, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestlinkCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+861, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestlocaleCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+872, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestpanicCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+882, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestparseargsCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+896, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestparserObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+907, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestparsevarObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+920, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestparsevarnameObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+937, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestregexpObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+948, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestreturnObjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+959, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsaveresultCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+974, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsetassocdataCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+991, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsetCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1004, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsetCmd})),
		uintptr(0x200), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1015, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{Testset2Cmd})),
		uintptr(0x200), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1024, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestseterrorcodeCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1041,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestsetobjerrorcodeCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1061,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestNumUtfCharsCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1077,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestFindFirstCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1091,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TestFindLastCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1104, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsetplatformCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1120, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TeststaticpkgCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1134,
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{TesttranslatefilenameCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1156, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestupvarCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 388)))(tls, interp, ts+1166, 0, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, uintptr, uintptr) int32
	}{TestMathFunc})), uintptr(123))
	(*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 388)))(tls, interp, ts+1169, 0, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, uintptr, uintptr) int32
	}{TestMathFunc})), uintptr(345))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1172, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestmainthreadCmd})), uintptr(0),
		uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1187, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestsetmainloopCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+1203, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestexitmainloopCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1220, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestcpuidCmd})),
		uintptr(0), uintptr(0))
	*(*Tcl_ValueType)(unsafe.Pointer(bp /* &t3ArgTypes[0] */ + uintptr(0)*4)) = TCL_EITHER
	*(*Tcl_ValueType)(unsafe.Pointer(bp /* &t3ArgTypes[0] */ + uintptr(1)*4)) = TCL_EITHER
	(*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 388)))(tls, interp, ts+1230, 2, bp, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, uintptr, uintptr) int32
	}{TestMathFunc2})),
		uintptr(0))

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1233, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestNREUnwind})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1247, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestNRELevels})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+1261, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestInterpResolverCmd})),
		uintptr(0), uintptr(0))

	if TclObjTest_Init(tls, interp) != 0 {
		return 1
	}
	if Procbodytest_Init(tls, interp) != 0 {
		return 1
	}

	// Check for special options used in ../tests/main.test

	listPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1232)))(tls, interp, ts+1280, uintptr(0), 1)
	if listPtr != uintptr(0) {
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 188)))(tls, interp, listPtr, bp+8, bp+12) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 8)) != 0 && (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 12)) + uintptr(0)*4)), uintptr(unsafe.Pointer(&specialOptions)), int32(unsafe.Sizeof(uintptr(0))), uintptr(0), 1, bp+16) == 0 {
			switch *(*int32)(unsafe.Pointer(bp + 16 /* index */)) {
			case 0:
				return 1
				fallthrough
			case 1:
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 448)))(tls, interp)
				return 1
				fallthrough
			case 2:
				{
					// var mode int32 at bp+20, 4

					(*(*func(*libc.TLS, uintptr, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1016)))(tls, interp,
						(*(*func(*libc.TLS, uintptr, uintptr, uintptr) Tcl_Channel)(unsafe.Pointer(tclStubsPtr + 612)))(tls, interp, ts+1285, bp+20))
					return 1

				}
				fallthrough
			case 3:
				if *(*int32)(unsafe.Pointer(bp + 8))-1 != 0 {
					(*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1276)))(tls, interp, ts+1292, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 12)) + uintptr(1)*4)),
						1)
				}
				return 1
			}
		}
	}

	// And finally add any platform specific test commands.

	return TclplatformtestInit(tls, interp)
}

var specialOptions = [5]uintptr{
	ts + 1307 /* "-appinitprocerro..." */, ts + 1325, /* "-appinitprocdele..." */
	ts + 1350 /* "-appinitprocclos..." */, ts + 1374 /* "-appinitprocsetr..." */, uintptr(0),
} /* tclTest.c:552:23 */

//----------------------------------------------------------------------
//
// Tcltest_SafeInit --
//
//	This procedure performs application-specific initialization. Most
//	applications, especially those that incorporate additional packages,
//	will have their own version of this procedure.
//
// Results:
//	Returns a standard Tcl completion code, and leaves an error message in
//	the interp's result if an error occurs.
//
// Side effects:
//	Depends on the startup script.
//
//----------------------------------------------------------------------

func Tcltest_SafeInit(tls *libc.TLS, interp uintptr) int32 { /* tclTest.c:793:1: */
	if Tcl_InitStubs(tls, interp, ts+222 /* "8.5" */, 0) == uintptr(0) {
		return 1
	}
	return Procbodytest_SafeInit(tls, interp)
}

//----------------------------------------------------------------------
//
// TestasyncCmd --
//
//	This procedure implements the "testasync" command.  It is used
//	to test the asynchronous handler facilities of Tcl.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates, deletes, and invokes handlers.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestasyncCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:821:1: */
	bp := tls.Alloc(48)
	defer tls.Free(48)

	var asyncPtr uintptr
	var prevPtr uintptr
	// var id int32 at bp+40, 4

	// var code int32 at bp+44, 4

	if !(argc < 2) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1396, uintptr(0))
	return 1
__1:
	;
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409) == 0) {
		goto __2
	}
	if !(argc != 3) {
		goto __4
	}
	goto wrongNumArgs
__4:
	;
	asyncPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(TestAsyncHandler{})))
	(*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).command = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))+size_t(1))
	libc.Xstrcpy(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).command, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))

	(*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id = nextId
	nextId++
	(*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).handler = (*(*func(*libc.TLS, uintptr, ClientData) Tcl_AsyncHandler)(unsafe.Pointer(tclStubsPtr + 292)))(tls, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32) int32
	}{AsyncHandlerProc})),
		uintptr((*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id))
	(*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr = firstHandler
	firstHandler = asyncPtr

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id))
	goto __3
__2:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416) == 0) {
		goto __5
	}
	if !(argc == 2) {
		goto __7
	}

__8:
	if !(firstHandler != uintptr(0)) {
		goto __9
	}
	asyncPtr = firstHandler
	firstHandler = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr
	(*(*func(*libc.TLS, Tcl_AsyncHandler))(unsafe.Pointer(tclStubsPtr + 296)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).handler)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).command)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, asyncPtr)
	goto __8
__9:
	;

	return 0
__7:
	;
	if !(argc != 3) {
		goto __10
	}
	goto wrongNumArgs
__10:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+40) != 0) {
		goto __11
	}
	return 1
__11:
	;

	prevPtr = uintptr(0)
	asyncPtr = firstHandler
__12:
	if !(asyncPtr != uintptr(0)) {
		goto __14
	}
	if !((*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id != *(*int32)(unsafe.Pointer(bp + 40))) {
		goto __15
	}
	goto __13
__15:
	;
	if !(prevPtr == uintptr(0)) {
		goto __16
	}
	firstHandler = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr
	goto __17
__16:
	(*TestAsyncHandler)(unsafe.Pointer(prevPtr)).nextPtr = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr
__17:
	;
	(*(*func(*libc.TLS, Tcl_AsyncHandler))(unsafe.Pointer(tclStubsPtr + 296)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).handler)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).command)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, asyncPtr)
	goto __14
	goto __13
__13:
	prevPtr = asyncPtr
	asyncPtr = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr
	goto __12
	goto __14
__14:
	;

	goto __6
__5:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1423) == 0) {
		goto __18
	}
	if !(argc != 5) {
		goto __20
	}
	goto wrongNumArgs
__20:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+40) != 0 ||
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), bp+44) != 0) {
		goto __21
	}
	return 1
__21:
	;

	asyncPtr = firstHandler
__22:
	if !(asyncPtr != uintptr(0)) {
		goto __24
	}
	if !((*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id == *(*int32)(unsafe.Pointer(bp + 40))) {
		goto __25
	}
	(*(*func(*libc.TLS, Tcl_AsyncHandler))(unsafe.Pointer(tclStubsPtr + 304)))(tls, (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).handler)
	goto __24
__25:
	;
	goto __23
__23:
	asyncPtr = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr
	goto __22
	goto __24
__24:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), -1))

	return *(*int32)(unsafe.Pointer(bp + 44 /* code */))
	goto __19
__18:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
		ts+1441 /* "\": must be creat..." */, uintptr(0)))
	return 1
__19:
	;
__6:
	;
__3:
	;
	return 0
}

var nextId int32 = 1 /* tclTest.c:829:16 */

func AsyncHandlerProc(tls *libc.TLS, clientData ClientData, interp uintptr, code int32) int32 { /* tclTest.c:946:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	var asyncPtr uintptr
	var id int32 = int32(clientData)
	// var listArgv [4]uintptr at bp+24, 16

	var cmd uintptr
	// var string [24]int8 at bp, 24

	for asyncPtr = firstHandler; asyncPtr != uintptr(0); asyncPtr = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).nextPtr {
		if (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).id == id {
			break
		}
	}

	if !(asyncPtr != 0) {
		// Woops - this one was deleted between the AsyncMark and now
		return 0
	}

	(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp, int32(code))
	*(*uintptr)(unsafe.Pointer(bp + 24 /* &listArgv[0] */ + uintptr(0)*4)) = (*TestAsyncHandler)(unsafe.Pointer(asyncPtr)).command
	*(*uintptr)(unsafe.Pointer(bp + 24 /* &listArgv[0] */ + uintptr(1)*4)) = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp))
	*(*uintptr)(unsafe.Pointer(bp + 24 /* &listArgv[0] */ + uintptr(2)*4)) = bp /* &string[0] */
	*(*uintptr)(unsafe.Pointer(bp + 24 /* &listArgv[0] */ + uintptr(3)*4)) = uintptr(0)
	cmd = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 776)))(tls, 3, bp+24)
	if interp != uintptr(0) {
		code = (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, cmd, -1, 0)
	} else {
		// this should not happen, but by definition of how async handlers are
		// invoked, it's possible.  Better error checking is needed here.
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, cmd)
	return code
}

//----------------------------------------------------------------------
//
// AsyncThreadProc --
//
//	Delivers an asynchronous event to a handler in another thread.
//
// Results:
//	None.
//
// Side effects:
//	Invokes Tcl_AsyncMark on the handler
//
//----------------------------------------------------------------------

func TestbumpinterpepochObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:1031:1: */
	var iPtr uintptr = interp
	if objc != 1 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+1481)
		return 1
	}
	(*Interp)(unsafe.Pointer(iPtr)).compileEpoch++
	return 0
}

//----------------------------------------------------------------------
//
// TestcmdinfoCmd --
//
//	This procedure implements the "testcmdinfo" command.  It is used to
//	test Tcl_GetCommandInfo, Tcl_SetCommandInfo, and command creation and
//	deletion.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes various commands and modifies their data.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestcmdinfoCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1066:1: */
	bp := tls.Alloc(400)
	defer tls.Free(400)

	// var info Tcl_CmdInfo at bp+368, 32

	if argc != 3 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+1508 /* " option cmdName\"" */, uintptr(0)))
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{CmdProc1})), ts+1525, /* "original" */
			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{CmdDelProc1})))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416 /* "delete" */) == 0 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, uintptr(unsafe.Pointer(&delString)))
		(*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 420)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 500)))(tls, interp, uintptr(unsafe.Pointer(&delString)))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1534 /* "get" */) == 0 {
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 644)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+368) == 0 {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1538, uintptr(0))
			return 0
		}
		if (*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).proc == *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{CmdProc1})) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1541, ts+1550,
				(*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).clientData, uintptr(0)))
		} else if (*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).proc == *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{CmdProc2})) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+80, ts+1552, ts+1550,
				(*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).clientData, uintptr(0)))
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+120, ts+1561, uintptr(0)))
		}
		if (*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).deleteProc == *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{CmdDelProc1})) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+144, ts+1569, ts+1550,
				(*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).deleteData, uintptr(0)))
		} else if (*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).deleteProc == *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{CmdDelProc2})) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+184, ts+1582, ts+1550,
				(*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).deleteData, uintptr(0)))
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+224, ts+1595, uintptr(0)))
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+248, ts+1550, (*Tcl_Namespace)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp+368)).namespacePtr)).fullName, uintptr(0)))
		if (*Tcl_CmdInfo)(unsafe.Pointer(bp+368 /* &info */)).isNativeObjectProc != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+280, ts+1604, uintptr(0)))
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+304, ts+1622, uintptr(0)))
		}
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1634 /* "modify" */) == 0 {
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).proc = *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{CmdProc2}))
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).clientData = ts + 1641 /* "new_command_data" */
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).objProc = uintptr(0)
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).objClientData = uintptr(0)
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).deleteProc = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{CmdDelProc2}))
		(*Tcl_CmdInfo)(unsafe.Pointer(bp + 368 /* &info */)).deleteData = ts + 1658 /* "new_delete_data" */
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 912)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+368) == 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, 0))
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, 1))
		}
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+328, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+1674 /* "\": must be creat..." */, uintptr(0)))
		return 1
	}
	return 0
}

//ARGSUSED
func CmdProc1(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1137:1: */
	bp := tls.Alloc(32)
	defer tls.Free(32)

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1716, clientData, uintptr(0)))
	return 0
}

//ARGSUSED
func CmdProc2(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1149:1: */
	bp := tls.Alloc(32)
	defer tls.Free(32)

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1726, clientData, uintptr(0)))
	return 0
}

func CmdDelProc1(tls *libc.TLS, clientData ClientData) { /* tclTest.c:1160:1: */
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, uintptr(unsafe.Pointer(&delString)))
	(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, uintptr(unsafe.Pointer(&delString)), ts+1736, -1)
	(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, uintptr(unsafe.Pointer(&delString)), clientData, -1)
}

func CmdDelProc2(tls *libc.TLS, clientData ClientData) { /* tclTest.c:1169:1: */
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, uintptr(unsafe.Pointer(&delString)))
	(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, uintptr(unsafe.Pointer(&delString)), ts+1749, -1)
	(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, uintptr(unsafe.Pointer(&delString)), clientData, -1)
}

//----------------------------------------------------------------------
//
// TestcmdtokenCmd --
//
//	This procedure implements the "testcmdtoken" command. It is used to
//	test Tcl_Command tokens and procedures such as Tcl_GetCommandFullName.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes various commands and modifies their data.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestcmdtokenCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1196:1: */
	bp := tls.Alloc(188)
	defer tls.Free(188)

	var token Tcl_Command
	// var l uintptr at bp+184, 4

	// var buf [30]int8 at bp+152, 30

	if argc != 3 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+1762 /* " option arg\"" */, uintptr(0)))
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		token = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
		}{CmdProc1})),
			ts+1525 /* "original" */, uintptr(0))
		libc.Xsprintf(tls, bp+152 /* &buf[0] */, ts+1775 /* "%p" */, libc.VaList(bp+40, token))
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, bp+152, uintptr(1))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1778 /* "name" */) == 0 {
		var objPtr uintptr

		if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), ts+1775 /* "%p" */, libc.VaList(bp+56, bp+184 /* &l */)) != 1 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+72, ts+1783, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)),
				ts+1803 /* "\"" */, uintptr(0)))
			return 1
		}

		objPtr = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
		(*(*func(*libc.TLS, uintptr, Tcl_Command, uintptr))(unsafe.Pointer(tclIntStubsPtr + 500)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 184)), objPtr)

		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp,
			(*(*func(*libc.TLS, uintptr, Tcl_Command) uintptr)(unsafe.Pointer(tclStubsPtr + 648)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 184))))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, objPtr))
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = objPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+112, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+1805 /* "\": must be creat..." */, uintptr(0)))
		return 1
	}
	return 0
}

//----------------------------------------------------------------------
//
// TestcmdtraceCmd --
//
//	This procedure implements the "testcmdtrace" command. It is used
//	to test Tcl_CreateTrace and Tcl_DeleteTrace.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes a command trace, and tests the invocation of
//	a procedure by the command trace.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestcmdtraceCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1260:1: */
	bp := tls.Alloc(364)
	defer tls.Free(364)

	// var buffer Tcl_DString at bp+152, 212

	var result int32

	if argc != 3 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+1831 /* " option script\"" */, uintptr(0)))
		return 1
	}

	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1847 /* "tracetest" */) == 0 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, bp+152)
		cmdTrace = (*(*func(*libc.TLS, uintptr, int32, uintptr, ClientData) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 404)))(tls, interp, 50000, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr, uintptr, ClientData, int32, uintptr)
		}{CmdTraceProc})), bp+152 /* &buffer */)
		result = (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), -1, 0)
		if result == 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, (*Tcl_DString)(unsafe.Pointer(bp+152)).string, uintptr(0)))
		}
		(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, cmdTrace)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp+152)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1857 /* "deletetest" */) == 0 {
		// Create a command trace then eval a script to check whether it is
		// called. Note that this trace procedure removes itself as a further
		// check of the robustness of the trace proc calling code in
		// TclNRExecuteByteCode.

		cmdTrace = (*(*func(*libc.TLS, uintptr, int32, uintptr, ClientData) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 404)))(tls, interp, 50000, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr, uintptr, ClientData, int32, uintptr)
		}{CmdTraceDeleteProc})), uintptr(0))
		(*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), -1, 0)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1868 /* "leveltest" */) == 0 {
		var iPtr uintptr = interp
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, bp+152)
		cmdTrace = (*(*func(*libc.TLS, uintptr, int32, uintptr, ClientData) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 404)))(tls, interp, (*Interp)(unsafe.Pointer(iPtr)).numLevels+4, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr, uintptr, ClientData, int32, uintptr)
		}{CmdTraceProc})),
			bp+152 /* &buffer */)
		result = (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), -1, 0)
		if result == 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+64, (*Tcl_DString)(unsafe.Pointer(bp+152)).string, uintptr(0)))
		}
		(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, cmdTrace)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp+152)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1878 /* "resulttest" */) == 0 {

		deleteCalled = 0
		cmdTrace = (*(*func(*libc.TLS, uintptr, int32, int32, uintptr, ClientData, uintptr) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 1940)))(tls, interp, 50000,
			0x20000, *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr, int32, uintptr, Tcl_Command, int32, uintptr) int32
			}{ObjTraceProc})),
			uintptr(unsafe.Pointer(&deleteCalled)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{ObjTraceDeleteProc})))
		result = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 524)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))
		(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, cmdTrace)
		if !(deleteCalled != 0) {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1889, uintptr(0))
			return 1
		} else {
			return result
		}
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1910 /* "doubletest" */) == 0 {
		var t1 Tcl_Trace
		var t2 Tcl_Trace

		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, bp+152)
		t1 = (*(*func(*libc.TLS, uintptr, int32, uintptr, ClientData) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 404)))(tls, interp, 1, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr, uintptr, ClientData, int32, uintptr)
		}{CmdTraceProc})), bp+152 /* &buffer */)
		t2 = (*(*func(*libc.TLS, uintptr, int32, uintptr, ClientData) Tcl_Trace)(unsafe.Pointer(tclStubsPtr + 404)))(tls, interp, 50000, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, ClientData, uintptr, int32, uintptr, uintptr, ClientData, int32, uintptr)
		}{CmdTraceProc})), bp+152 /* &buffer */)
		result = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 524)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))
		if result == 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+88, (*Tcl_DString)(unsafe.Pointer(bp+152)).string, uintptr(0)))
		}
		(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, t2)
		(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, t1)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp+152)
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+112, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+1921 /* "\": must be trace..." */, uintptr(0)))
		return 1
	}
	return 0
}

var deleteCalled int32 /* tclTest.c:1312:13: */

func CmdTraceProc(tls *libc.TLS, clientData ClientData, interp uintptr, level int32, command uintptr, cmdProc uintptr, cmdClientData ClientData, argc int32, argv uintptr) { /* tclTest.c:1349:1: */
	var bufPtr uintptr = clientData
	var i int32

	(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, bufPtr, command)

	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 508)))(tls, bufPtr)
	for i = 0; i < argc; i++ {
		(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, bufPtr, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 484)))(tls, bufPtr)
}

func CmdTraceDeleteProc(tls *libc.TLS, clientData ClientData, interp uintptr, level int32, command uintptr, cmdProc uintptr, cmdClientData ClientData, argc int32, argv uintptr) { /* tclTest.c:1376:1: */
	// Remove ourselves to test whether calling Tcl_DeleteTrace within a trace
	// callback causes the for loop in TclNRExecuteByteCode that calls traces to
	// reference freed memory.

	(*(*func(*libc.TLS, uintptr, Tcl_Trace))(unsafe.Pointer(tclStubsPtr + 460)))(tls, interp, cmdTrace)
}

func ObjTraceProc(tls *libc.TLS, clientData ClientData, interp uintptr, level int32, command uintptr, token Tcl_Command, objc int32, objv uintptr) int32 { /* tclTest.c:1398:1: */
	var word uintptr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(0)*4)))

	if !(libc.Xstrcmp(tls, word, ts+1980) != 0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, command, -1))
		return 1
	} else if !(libc.Xstrcmp(tls, word, ts+1986) != 0) {
		return 3
	} else if !(libc.Xstrcmp(tls, word, ts+1992) != 0) {
		return 4
	} else if !(libc.Xstrcmp(tls, word, ts+2001) != 0) {
		return 2
	} else if !(libc.Xstrcmp(tls, word, ts+2008) != 0) {
		return 6
	} else {
		return 0
	}
	return int32(0)
}

func ObjTraceDeleteProc(tls *libc.TLS, clientData ClientData) { /* tclTest.c:1426:1: */
	var intPtr uintptr = clientData
	*(*int32)(unsafe.Pointer(intPtr)) = 1 // Record that the trace was deleted
}

//----------------------------------------------------------------------
//
// TestcreatecommandCmd --
//
//	This procedure implements the "testcreatecommand" command. It is used
//	to test that the Tcl_CreateCommand creates a new command in the
//	namespace specified as part of its name, if any. It also checks that
//	the namespace code ignore single ":"s in the middle or end of a
//	command name.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes two commands ("test_ns_basic::createdcommand"
//	and "value:at:").
//
//----------------------------------------------------------------------

func TestcreatecommandCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1455:1: */
	bp := tls.Alloc(80)
	defer tls.Free(80)

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+2020 /* " option\"" */, uintptr(0)))
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+2029,
			*(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
			}{CreatedCommandProc})), uintptr(0), uintptr(0))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416 /* "delete" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 420)))(tls, interp, ts+2029)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2059 /* "create2" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, interp, ts+2067,
			*(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
			}{CreatedCommandProc2})), uintptr(0), uintptr(0))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2077 /* "delete2" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 420)))(tls, interp, ts+2067)
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+2085 /* "\": must be creat..." */, uintptr(0)))
		return 1
	}
	return 0
}

func CreatedCommandProc(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1485:1: */
	bp := tls.Alloc(88)
	defer tls.Free(88)

	// var info Tcl_CmdInfo at bp+56, 32

	var found int32

	found = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 644)))(tls, interp, ts+2029,
		bp+56 /* &info */)
	if !(found != 0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2132,
			uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+2212,
		(*Tcl_Namespace)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp+56 /* &info */)).namespacePtr)).fullName, uintptr(0)))
	return 0
}

func CreatedCommandProc2(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1507:1: */
	bp := tls.Alloc(88)
	defer tls.Free(88)

	// var info Tcl_CmdInfo at bp+56, 32

	var found int32

	found = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 644)))(tls, interp, ts+2067, bp+56)
	if !(found != 0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2235,
			uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+2316,
		(*Tcl_Namespace)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp+56 /* &info */)).namespacePtr)).fullName, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestdcallCmd --
//
//	This procedure implements the "testdcall" command.  It is used
//	to test Tcl_CallWhenDeleted.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes interpreters.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestdcallCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1546:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var i int32
	// var id int32 at bp, 4

	delInterp = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 384)))(tls)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, uintptr(unsafe.Pointer(&delString)))
	for i = 1; i < argc; i++ {
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp /* id */)) < 0 {
			(*(*func(*libc.TLS, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 464)))(tls, delInterp, *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr)
			}{DelCallbackProc})),
				uintptr(-*(*int32)(unsafe.Pointer(bp /* id */))))
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 324)))(tls, delInterp, *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr)
			}{DelCallbackProc})),
				uintptr(*(*int32)(unsafe.Pointer(bp /* id */))))
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 448)))(tls, delInterp)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 500)))(tls, interp, uintptr(unsafe.Pointer(&delString)))
	return 0
}

// The deletion callback used by TestdcallCmd:

func DelCallbackProc(tls *libc.TLS, clientData ClientData, interp uintptr) { /* tclTest.c:1578:1: */
	bp := tls.Alloc(24)
	defer tls.Free(24)

	var id int32 = int32(clientData)
	// var buffer [24]int8 at bp, 24

	(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp, int32(id))
	(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, uintptr(unsafe.Pointer(&delString)), bp)
	if interp != delInterp {
		(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, uintptr(unsafe.Pointer(&delString)), ts+2340)
	}
}

//----------------------------------------------------------------------
//
// TestdelCmd --
//
//	This procedure implements the "testdel" command.  It is used
//	to test calling of command deletion callbacks.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates a command.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestdelCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1611:1: */
	var dPtr uintptr
	var slave uintptr

	if argc != 4 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1396, uintptr(0))
		return 1
	}

	slave = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 696)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))
	if slave == uintptr(0) {
		return 1
	}

	dPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(DelCmd{})))
	(*DelCmd)(unsafe.Pointer(dPtr)).interp = interp
	(*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)))+size_t(1))
	libc.Xstrcpy(tls, (*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)))

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 372)))(tls, slave, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{DelCmdProc})), dPtr,
		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{DelDeleteProc})))
	return 0
}

func DelCmdProc(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1641:1: */
	bp := tls.Alloc(24)
	defer tls.Free(24)

	var dPtr uintptr = clientData

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, (*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd, uintptr(0)))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, dPtr)
	return 0
}

func DelDeleteProc(tls *libc.TLS, clientData ClientData) { /* tclTest.c:1656:1: */
	var dPtr uintptr = clientData

	(*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 524)))(tls, (*DelCmd)(unsafe.Pointer(dPtr)).interp, (*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, (*DelCmd)(unsafe.Pointer(dPtr)).interp)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*DelCmd)(unsafe.Pointer(dPtr)).deleteCmd)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, dPtr)
}

//----------------------------------------------------------------------
//
// TestdelassocdataCmd --
//
//	This procedure implements the "testdelassocdata" command. It is used
//	to test Tcl_DeleteAssocData.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Deletes an association between a key and associated data from an
//	interpreter.
//
//----------------------------------------------------------------------

func TestdelassocdataCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1686:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+2399 /* " data_key\"" */, uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 408)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))
	return 0
}

//-----------------------------------------------------------------------------
//
// TestdoubledigitsCmd --
//
//	This procedure implements the 'testdoubledigits' command. It is
//	used to test the low-level floating-point formatting primitives
//	in Tcl.
//
// Usage:
//	testdoubledigits fpval ndigits type ?shorten"
//
// Parameters:
//	fpval - Floating-point value to format.
//	ndigits - Digit count to request from Tcl_DoubleDigits
//	type - One of 'shortest', 'Steele', 'e', 'f'
//	shorten - Indicates that the 'shorten' flag should be passed in.
//
//-----------------------------------------------------------------------------

func TestdoubledigitsObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:1723:1: */
	bp := tls.Alloc(48)
	defer tls.Free(48)

	var doubleType uintptr
	// var d float64 at bp+16, 8

	var status int32
	// var ndigits int32 at bp+24, 4

	// var type1 int32 at bp+28, 4

	// var decpt int32 at bp+32, 4

	// var signum int32 at bp+36, 4

	var str uintptr
	// var endPtr uintptr at bp+40, 4

	// var strObj uintptr at bp+44, 4

	var retval uintptr

	if objc < 4 || objc > 5 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+2410)
		return 1
	}
	status = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 148)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+16)
	if status != 0 {
		doubleType = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 168)))(tls, ts+2439)
		if (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))).typePtr == doubleType ||
			libc.X__isnan(tls, *(*float64)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)) + 16))) != 0 {
			status = 0
			libc.Xmemcpy(tls, bp+16 /* &d */, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))+16, uint32(unsafe.Sizeof(float64(0))))
		}
	}
	if status != 0 ||
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+24) != 0 ||
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), uintptr(unsafe.Pointer(&options)), int32(unsafe.Sizeof(uintptr(0))), ts+2446, 1, bp+28) != 0 {
		libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+2462 /* "bad value? %g\n" */, libc.VaList(bp, *(*float64)(unsafe.Pointer(bp + 16 /* d */))))
		return 1
	}
	*(*int32)(unsafe.Pointer(bp + 28 /* type1 */)) = types[*(*int32)(unsafe.Pointer(bp + 28 /* type1 */))]
	if objc > 4 {
		if libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(4)*4))), ts+2477) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+2485, -1))
			return 1
		}
		*(*int32)(unsafe.Pointer(bp + 28 /* type1 */)) |= 0x4
	}
	str = (*(*func(*libc.TLS, float64, int32, int32, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(tclIntStubsPtr + 1004)))(tls, *(*float64)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 28)), bp+32, bp+36, bp+40)
	*(*uintptr)(unsafe.Pointer(bp + 44 /* strObj */)) = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, str, (int32(*(*uintptr)(unsafe.Pointer(bp + 40)))-int32(str))/1)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, str)
	retval = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 1, bp+44)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), retval, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 32))))
	*(*uintptr)(unsafe.Pointer(bp + 44 /* strObj */)) = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, func() uintptr {
		if *(*int32)(unsafe.Pointer(bp + 36 /* signum */)) != 0 {
			return ts + 2494 /* "-" */
		}
		return ts + 2496 /* "+" */
	}(), 1)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), retval, *(*uintptr)(unsafe.Pointer(bp + 44)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, retval)
	return 0
}

var options = [5]uintptr{
	ts + 2498, /* "shortest" */
	ts + 2507, /* "Steele" */
	ts + 2514, /* "e" */
	ts + 2516, /* "f" */
	uintptr(0),
} /* tclTest.c:1732:22 */
var types = [4]int32{
	0x4,
	0x5,
	0x2,
	0x3,
} /* tclTest.c:1739:22 */

//----------------------------------------------------------------------
//
// TestdstringCmd --
//
//	This procedure implements the "testdstring" command.  It is used
//	to test the dynamic string facilities of Tcl.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates, deletes, and invokes handlers.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestdstringCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:1816:1: */
	bp := tls.Alloc(84)
	defer tls.Free(84)

	// var count int32 at bp+80, 4

	var s uintptr
	var s1 uintptr

	if !(argc < 2) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1396, uintptr(0))
	return 1
__1:
	;
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2518) == 0) {
		goto __2
	}
	if !(argc != 4) {
		goto __4
	}
	goto wrongNumArgs
__4:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), bp+80) != 0) {
		goto __5
	}
	return 1
__5:
	;
	(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, uintptr(unsafe.Pointer(&dstring)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*int32)(unsafe.Pointer(bp + 80)))
	goto __3
__2:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2525) == 0) {
		goto __6
	}
	if !(argc != 3) {
		goto __8
	}
	goto wrongNumArgs
__8:
	;
	(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, uintptr(unsafe.Pointer(&dstring)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))
	goto __7
__6:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2533) == 0) {
		goto __9
	}
	if !(argc != 2) {
		goto __11
	}
	goto wrongNumArgs
__11:
	;
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 484)))(tls, uintptr(unsafe.Pointer(&dstring)))
	goto __10
__9:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2537) == 0) {
		goto __12
	}
	if !(argc != 2) {
		goto __14
	}
	goto wrongNumArgs
__14:
	;
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, uintptr(unsafe.Pointer(&dstring)))
	goto __13
__12:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1534) == 0) {
		goto __15
	}
	if !(argc != 2) {
		goto __17
	}
	goto wrongNumArgs
__17:
	;
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, (*Tcl_DString)(unsafe.Pointer(uintptr(unsafe.Pointer(&dstring)))).string, uintptr(1))
	goto __16
__15:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+2542) == 0) {
		goto __18
	}
	if !(argc != 3) {
		goto __20
	}
	goto wrongNumArgs
__20:
	;
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), ts+2550) == 0) {
		goto __21
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+2562, uintptr(0))
	goto __22
__21:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), ts+2568) == 0) {
		goto __23
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+2580, uintptr(0))
	goto __24
__23:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), ts+2537) == 0) {
		goto __25
	}
	s = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(100))
	libc.Xstrcpy(tls, s, ts+3111 /* "This is a malloc..." */)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, s, uintptr(3))
	goto __26
__25:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), ts+3138) == 0) {
		goto __27
	}
	s1 = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(100)) + uintptr(16)
	libc.Xstrcpy(tls, s1, ts+3146 /* "This is a specia..." */)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, s1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{SpecialFree})))
	goto __28
__27:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+3183, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)),
		ts+3204, /* "\": must be stati..." */
		uintptr(0)))
	return 1
__28:
	;
__26:
	;
__24:
	;
__22:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 492)))(tls, interp, uintptr(unsafe.Pointer(&dstring)))
	goto __19
__18:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3258) == 0) {
		goto __29
	}

	if !(argc != 2) {
		goto __31
	}
	goto wrongNumArgs
__31:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*Tcl_DString)(unsafe.Pointer(uintptr(unsafe.Pointer(&dstring)))).length))
	goto __30
__29:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3265) == 0) {
		goto __32
	}
	if !(argc != 2) {
		goto __34
	}
	goto wrongNumArgs
__34:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 500)))(tls, interp, uintptr(unsafe.Pointer(&dstring)))
	goto __33
__32:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3272) == 0) {
		goto __35
	}
	if !(argc != 3) {
		goto __37
	}
	goto wrongNumArgs
__37:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+80) != 0) {
		goto __38
	}
	return 1
__38:
	;
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 504)))(tls, uintptr(unsafe.Pointer(&dstring)), *(*int32)(unsafe.Pointer(bp + 80)))
	goto __36
__35:
	if !(libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3278) == 0) {
		goto __39
	}
	if !(argc != 2) {
		goto __41
	}
	goto wrongNumArgs
__41:
	;
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 508)))(tls, uintptr(unsafe.Pointer(&dstring)))
	goto __40
__39:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),

		ts+3284 /* "\": must be appen..." */, uintptr(0)))
	return 1
__40:
	;
__36:
	;
__33:
	;
__30:
	;
__19:
	;
__16:
	;
__13:
	;
__10:
	;
__7:
	;
__3:
	;
	return 0
}

// The procedure below is used as a special freeProc to test how well
// Tcl_DStringGetResult handles freeProc's other than free.

func SpecialFree(tls *libc.TLS, blockPtr uintptr) { /* tclTest.c:1918:13: */
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, blockPtr-uintptr(16))
}

//----------------------------------------------------------------------
//
// TestencodingCmd --
//
//	This procedure implements the "testencoding" command.  It is used
//	to test the encoding package.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Load encodings.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestencodingObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:1943:1: */
	bp := tls.Alloc(32)
	defer tls.Free(32)

	var encoding Tcl_Encoding
	// var index int32 at bp, 4

	// var length int32 at bp+4, 4

	var string uintptr
	var encodingPtr uintptr

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&optionStrings)), int32(unsafe.Sizeof(uintptr(0))), ts+3360, 0, bp) != 0 {
		return 1
	}

	switch uint32(*(*int32)(unsafe.Pointer(bp /* index */))) {
	case uint32(0) /* ENC_CREATE */ :
		{
			// var type1 Tcl_EncodingType at bp+8, 24

			if objc != 5 {
				return 1
			}
			encodingPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(TclEncoding{})))
			(*TclEncoding)(unsafe.Pointer(encodingPtr)).interp = interp

			string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+4)
			(*TclEncoding)(unsafe.Pointer(encodingPtr)).toUtfCmd = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(*(*int32)(unsafe.Pointer(bp + 4))+1))
			libc.Xmemcpy(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).toUtfCmd, string, uint32(*(*int32)(unsafe.Pointer(bp + 4)))+uint32(1))

			string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(4)*4)), bp+4)
			(*TclEncoding)(unsafe.Pointer(encodingPtr)).fromUtfCmd = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(*(*int32)(unsafe.Pointer(bp + 4))+1))
			libc.Xmemcpy(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).fromUtfCmd, string, uint32(*(*int32)(unsafe.Pointer(bp + 4))+1))

			string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+4)

			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).encodingName = string
			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).toUtfProc = *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr, int32, int32, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32
			}{EncodingToUtfProc}))
			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).fromUtfProc = *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, ClientData, uintptr, int32, int32, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32
			}{EncodingFromUtfProc}))
			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).freeProc = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{EncodingFreeProc}))
			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).clientData = encodingPtr
			(*Tcl_EncodingType)(unsafe.Pointer(bp + 8 /* &type1 */)).nullSize = 1

			(*(*func(*libc.TLS, uintptr) Tcl_Encoding)(unsafe.Pointer(tclStubsPtr + 1156)))(tls, bp+8)
			break

		}
	case uint32(1) /* ENC_DELETE */ :
		if objc != 3 {
			return 1
		}
		encoding = (*(*func(*libc.TLS, uintptr, uintptr) Tcl_Encoding)(unsafe.Pointer(tclStubsPtr + 1212)))(tls, uintptr(0), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))))
		(*(*func(*libc.TLS, Tcl_Encoding))(unsafe.Pointer(tclStubsPtr + 1204)))(tls, encoding)
		(*(*func(*libc.TLS, Tcl_Encoding))(unsafe.Pointer(tclStubsPtr + 1204)))(tls, encoding)
		break
	}
	return 0
}

var optionStrings = [3]uintptr{
	ts + 1409 /* "create" */, ts + 1416 /* "delete" */, uintptr(0),
} /* tclTest.c:1953:23 */

func EncodingToUtfProc(tls *libc.TLS, clientData ClientData, src uintptr, srcLen int32, flags int32, statePtr uintptr, dst uintptr, dstLen int32, srcReadPtr uintptr, dstWrotePtr uintptr, dstCharsPtr uintptr) int32 { /* tclTest.c:2008:1: */
	var len int32
	var encodingPtr uintptr

	encodingPtr = clientData
	(*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp, (*TclEncoding)(unsafe.Pointer(encodingPtr)).toUtfCmd, -1, 0x020000)

	len = int32(libc.Xstrlen(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 704)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp)))
	if len > dstLen {
		len = dstLen
	}
	libc.Xmemcpy(tls, dst, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 704)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp), uint32(len))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp)

	*(*int32)(unsafe.Pointer(srcReadPtr)) = srcLen
	*(*int32)(unsafe.Pointer(dstWrotePtr)) = len
	*(*int32)(unsafe.Pointer(dstCharsPtr)) = len
	return 0
}

func EncodingFromUtfProc(tls *libc.TLS, clientData ClientData, src uintptr, srcLen int32, flags int32, statePtr uintptr, dst uintptr, dstLen int32, srcReadPtr uintptr, dstWrotePtr uintptr, dstCharsPtr uintptr) int32 { /* tclTest.c:2040:1: */
	var len int32
	var encodingPtr uintptr

	encodingPtr = clientData
	(*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp, (*TclEncoding)(unsafe.Pointer(encodingPtr)).fromUtfCmd, -1, 0x020000)

	len = int32(libc.Xstrlen(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 704)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp)))
	if len > dstLen {
		len = dstLen
	}
	libc.Xmemcpy(tls, dst, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 704)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp), uint32(len))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).interp)

	*(*int32)(unsafe.Pointer(srcReadPtr)) = srcLen
	*(*int32)(unsafe.Pointer(dstWrotePtr)) = len
	*(*int32)(unsafe.Pointer(dstCharsPtr)) = len
	return 0
}

func EncodingFreeProc(tls *libc.TLS, clientData ClientData) { /* tclTest.c:2072:1: */
	var encodingPtr uintptr = clientData

	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).toUtfCmd)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*TclEncoding)(unsafe.Pointer(encodingPtr)).fromUtfCmd)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, encodingPtr)
}

//----------------------------------------------------------------------
//
// TestevalexObjCmd --
//
//	This procedure implements the "testevalex" command.  It is
//	used to test Tcl_EvalEx.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestevalexObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2100:1: */
	bp := tls.Alloc(44)
	defer tls.Free(44)

	// var length int32 at bp+40, 4

	var flags int32
	var script uintptr

	flags = 0
	if objc == 3 {
		var global uintptr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
		if libc.Xstrcmp(tls, global, ts+3367 /* "global" */) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+3374, global,
				ts+3386 /* "\": must be globa..." */, uintptr(0)))
			return 1
		}
		flags = 0x020000
	} else if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3404)
		return 1
	}

	script = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+40)
	return (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, script, *(*int32)(unsafe.Pointer(bp + 40)), flags)
}

//----------------------------------------------------------------------
//
// TestevalobjvObjCmd --
//
//	This procedure implements the "testevalobjv" command.  It is
//	used to test Tcl_EvalObjv.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestevalobjvObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2145:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var evalGlobal int32 at bp, 4

	if objc < 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3420)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}
	return (*(*func(*libc.TLS, uintptr, int32, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1176)))(tls, interp, objc-2, objv+uintptr(2)*4,
		func() int32 {
			if *(*int32)(unsafe.Pointer(bp /* evalGlobal */)) != 0 {
				return 0x020000
			}
			return 0
		}())
}

//----------------------------------------------------------------------
//
// TesteventObjCmd --
//
//	This procedure implements a 'testevent' command.  The command
//	is used to test event queue management.
//
// The command takes two forms:
//	- testevent queue name position script
//		Queues an event at the given position in the queue, and
//		associates a given name with it (the same name may be
//		associated with multiple events). When the event comes
//		to the head of the queue, executes the given script at
//		global level in the current interp. The position may be
//		one of 'head', 'tail' or 'mark'.
//	- testevent delete name
//		Deletes any events associated with the given name from
//		the queue.
//
// Return value:
//	Returns a standard Tcl result.
//
// Side effects:
//	Manipulates the event queue as directed.
//
//----------------------------------------------------------------------

func TesteventObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2194:1: */
	bp := tls.Alloc(8)
	defer tls.Free(8)

	// var subCmdIndex int32 at bp, 4

	// var posIndex int32 at bp+4, 4

	var ev uintptr // Event to be queued

	if objc < 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3443)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&subcommands)), int32(unsafe.Sizeof(uintptr(0))), ts+3464, 1, bp) != 0 {
		return 1
	}
	switch *(*int32)(unsafe.Pointer(bp /* subCmdIndex */)) {
	case 0: // queue
		if objc != 5 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+3475)
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), uintptr(unsafe.Pointer(&positions)), int32(unsafe.Sizeof(uintptr(0))), ts+3496, 1, bp+4) != 0 {
			return 1
		}
		ev = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(TestEvent{})))
		(*TestEvent)(unsafe.Pointer(ev)).header.proc = *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, int32) int32
		}{TesteventProc}))
		(*TestEvent)(unsafe.Pointer(ev)).header.nextPtr = uintptr(0)
		(*TestEvent)(unsafe.Pointer(ev)).interp = interp
		(*TestEvent)(unsafe.Pointer(ev)).command = *(*uintptr)(unsafe.Pointer(objv + uintptr(4)*4))
		(*Tcl_Obj)(unsafe.Pointer((*TestEvent)(unsafe.Pointer(ev)).command)).refCount++
		(*TestEvent)(unsafe.Pointer(ev)).tag = *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))
		(*Tcl_Obj)(unsafe.Pointer((*TestEvent)(unsafe.Pointer(ev)).tag)).refCount++
		(*(*func(*libc.TLS, uintptr, Tcl_QueuePosition))(unsafe.Pointer(tclStubsPtr + 828)))(tls, ev, posNum[*(*int32)(unsafe.Pointer(bp + 4))])
		break

	case 1: // delete
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+1778)
			return 1
		}
		(*(*func(*libc.TLS, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 428)))(tls, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, ClientData) int32
		}{TesteventDeleteProc})), *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
		break
	}

	return 0
}

var subcommands = [3]uintptr{ // Possible subcommands
	ts + 3515 /* "queue" */, ts + 1416 /* "delete" */, uintptr(0),
}                           /* tclTest.c:2200:23 */
var positions = [4]uintptr{ // Possible queue positions
	ts + 3521 /* "head" */, ts + 3526 /* "tail" */, ts + 1423 /* "mark" */, uintptr(0),
} /* tclTest.c:2204:23 */
var posNum = [3]Tcl_QueuePosition{
	// Interpretation of the chosen position
	TCL_QUEUE_HEAD,
	TCL_QUEUE_TAIL,
	TCL_QUEUE_MARK,
} /* tclTest.c:2208:36 */

//----------------------------------------------------------------------
//
// TesteventProc --
//
//	Delivers a test event to the Tcl interpreter as part of event
//	queue testing.
//
// Results:
//	Returns 1 if the event has been serviced, 0 otherwise.
//
// Side effects:
//	Evaluates the event's callback script, so has whatever side effects
//	the callback has.  The return value of the callback script becomes the
//	return value of this function.  If the callback script reports an
//	error, it is reported as a background error.
//
//----------------------------------------------------------------------

func TesteventProc(tls *libc.TLS, event uintptr, flags int32) int32 { /* tclTest.c:2278:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var ev uintptr = event
	var interp uintptr = (*TestEvent)(unsafe.Pointer(ev)).interp
	var command uintptr = (*TestEvent)(unsafe.Pointer(ev)).command
	var result int32 = (*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1180)))(tls, interp, command,
		0x020000|0x040000)
	// var retval int32 at bp, 4

	if result != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp,
			ts+3531 /* "    (command bou..." */)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 312)))(tls, interp)
		return 1 // Avoid looping on errors
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		bp /* &retval */) != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp,
			ts+3575 /* "    (return valu..." */)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 312)))(tls, interp)
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp /* retval */)) != 0 {
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = (*TestEvent)(unsafe.Pointer(ev)).tag
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		for ok1 := true; ok1; ok1 = 0 != 0 {
			var _objPtr uintptr = (*TestEvent)(unsafe.Pointer(ev)).command
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}

	return *(*int32)(unsafe.Pointer(bp /* retval */))
}

//----------------------------------------------------------------------
//
// TesteventDeleteProc --
//
//	Removes some set of events from the queue.
//
// This procedure is used as part of testing event queue management.
//
// Results:
//	Returns 1 if a given event should be deleted, 0 otherwise.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TesteventDeleteProc(tls *libc.TLS, event uintptr, clientData ClientData) int32 { /* tclTest.c:2329:1: */
	var ev uintptr // Event to examine
	var evNameStr uintptr
	var targetName uintptr // Name of the event(s) to delete
	var targetNameStr uintptr

	if (*Tcl_Event)(unsafe.Pointer(event)).proc != *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr, int32) int32
	}{TesteventProc})) {
		return 0
	}
	targetName = clientData
	targetNameStr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, targetName)
	ev = event
	evNameStr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, (*TestEvent)(unsafe.Pointer(ev)).tag)
	if libc.Xstrcmp(tls, evNameStr, targetNameStr) == 0 {
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = (*TestEvent)(unsafe.Pointer(ev)).tag
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		for ok1 := true; ok1; ok1 = 0 != 0 {
			var _objPtr uintptr = (*TestEvent)(unsafe.Pointer(ev)).command
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		return 1
	} else {
		return 0
	}
	return int32(0)
}

//----------------------------------------------------------------------
//
// TestexithandlerCmd --
//
//	This procedure implements the "testexithandler" command. It is
//	used to test Tcl_CreateExitHandler and Tcl_DeleteExitHandler.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexithandlerCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2373:1: */
	bp := tls.Alloc(84)
	defer tls.Free(84)

	// var value int32 at bp+80, 4

	if argc != 3 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+3620 /* " create|delete v..." */, uintptr(0)))
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+80) != 0 {
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		(*(*func(*libc.TLS, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 380)))(tls, func() uintptr {
			if *(*int32)(unsafe.Pointer(bp + 80))&1 != 0 {
				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{ExitProcOdd}))
			}
			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{ExitProcEven}))
		}(),
			uintptr(*(*int32)(unsafe.Pointer(bp + 80 /* value */))))
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416 /* "delete" */) == 0 {
		(*(*func(*libc.TLS, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 436)))(tls, func() uintptr {
			if *(*int32)(unsafe.Pointer(bp + 80))&1 != 0 {
				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{ExitProcOdd}))
			}
			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{ExitProcEven}))
		}(),
			uintptr(*(*int32)(unsafe.Pointer(bp + 80 /* value */))))
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+3642 /* "\": must be creat..." */, uintptr(0)))
		return 1
	}
	return 0
}

func ExitProcOdd(tls *libc.TLS, clientData ClientData) { /* tclTest.c:2404:1: */
	bp := tls.Alloc(56)
	defer tls.Free(56)

	// var buf [40]int8 at bp+16, 40

	var len int32

	libc.Xsprintf(tls, bp+16 /* &buf[0] */, ts+3670 /* "odd %d\n" */, libc.VaList(bp, int32(clientData)))
	len = int32(libc.Xstrlen(tls, bp+16 /* &buf[0] */))
	if len != libc.Xwrite(tls, 1, bp+16 /* &buf[0] */, uint32(len)) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+3678, 0)
	}
}

func ExitProcEven(tls *libc.TLS, clientData ClientData) { /* tclTest.c:2418:1: */
	bp := tls.Alloc(56)
	defer tls.Free(56)

	// var buf [40]int8 at bp+16, 40

	var len int32

	libc.Xsprintf(tls, bp+16 /* &buf[0] */, ts+3717 /* "even %d\n" */, libc.VaList(bp, int32(clientData)))
	len = int32(libc.Xstrlen(tls, bp+16 /* &buf[0] */))
	if len != libc.Xwrite(tls, 1, bp+16 /* &buf[0] */, uint32(len)) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+3726, 0)
	}
}

//----------------------------------------------------------------------
//
// TestexprlongCmd --
//
//	This procedure verifies that Tcl_ExprLong does not modify the
//	interpreter result if there is no error.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprlongCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2449:1: */
	bp := tls.Alloc(112)
	defer tls.Free(112)

	// var exprResult int32 at bp+80, 4

	// var buf [28]int8 at bp+84, 28

	var result int32

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+3766 /* " expression\"" */, uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+3779, uintptr(0))
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 564)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), bp+80)
	if result != 0 {
		return result
	}
	libc.Xsprintf(tls, bp+84 /* &buf[0] */, ts+3796 /* ": %ld" */, libc.VaList(bp+40, *(*int32)(unsafe.Pointer(bp + 80 /* exprResult */))))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+56, bp+84, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestexprlongobjCmd --
//
//	This procedure verifies that Tcl_ExprLongObj does not modify the
//	interpreter result if there is no error.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprlongobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2492:1: */
	bp := tls.Alloc(72)
	defer tls.Free(72)

	// var exprResult int32 at bp+40, 4

	// var buf [28]int8 at bp+44, 28

	var result int32

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3802)
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+3779, uintptr(0))
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 568)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+40)
	if result != 0 {
		return result
	}
	libc.Xsprintf(tls, bp+44 /* &buf[0] */, ts+3796 /* ": %ld" */, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 40 /* exprResult */))))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+16, bp+44, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestexprdoubleCmd --
//
//	This procedure verifies that Tcl_ExprDouble does not modify the
//	interpreter result if there is no error.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprdoubleCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2534:1: */
	bp := tls.Alloc(103)
	defer tls.Free(103)

	// var exprResult float64 at bp+64, 8

	// var buf [31]int8 at bp+72, 31

	var result int32

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+3766 /* " expression\"" */, uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+3779, uintptr(0))
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 556)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), bp+64)
	if result != 0 {
		return result
	}
	libc.Xstrcpy(tls, bp+72 /* &buf[0] */, ts+3813 /* ": " */)
	(*(*func(*libc.TLS, uintptr, float64, uintptr))(unsafe.Pointer(tclStubsPtr + 816)))(tls, interp, *(*float64)(unsafe.Pointer(bp + 64)), bp+72+uintptr(2))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, bp+72, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestexprdoubleobjCmd --
//
//	This procedure verifies that Tcl_ExprLongObj does not modify the
//	interpreter result if there is no error.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprdoubleobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2578:1: */
	bp := tls.Alloc(63)
	defer tls.Free(63)

	// var exprResult float64 at bp+24, 8

	// var buf [31]int8 at bp+32, 31

	var result int32

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3802)
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+3779, uintptr(0))
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 560)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+24)
	if result != 0 {
		return result
	}
	libc.Xstrcpy(tls, bp+32 /* &buf[0] */, ts+3813 /* ": " */)
	(*(*func(*libc.TLS, uintptr, float64, uintptr))(unsafe.Pointer(tclStubsPtr + 816)))(tls, interp, *(*float64)(unsafe.Pointer(bp + 24)), bp+32+uintptr(2))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, bp+32, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestexprstringCmd --
//
//	This procedure tests the basic operation of Tcl_ExprString.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprstringCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2620:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+3766 /* " expression\"" */, uintptr(0)))
		return 1
	}
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 576)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))
}

//----------------------------------------------------------------------
//
// TestfilelinkCmd --
//
//	This procedure implements the "testfilelink" command.  It is used to
//	test the effects of creating and manipulating filesystem links in Tcl.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	May create a link on disk.
//
//----------------------------------------------------------------------

func TestfilelinkCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:2652:1: */
	bp := tls.Alloc(112)
	defer tls.Free(112)

	var contents uintptr

	if objc < 2 || objc > 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+3816)
		return 1
	}

	if (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1844)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))) != 0 {
		return 1
	}

	if objc == 3 {
		// Create link from source to target
		contents = (*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1792)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)),
			0x01|0x02)
		if contents == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+3832,
				(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+3861,
				(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))), ts+3868,
				(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 824)))(tls, interp), uintptr(0)))
			return 1
		}
	} else {
		// Read link
		contents = (*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1792)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(0), 0)
		if contents == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+64, ts+3872,
				(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+3868,
				(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 824)))(tls, interp), uintptr(0)))
			return 1
		}
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, contents)
	if objc == 2 {
		// If we are creating a link, this will actually just
		// be objv[3], and we don't own it
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = contents
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
	return 0
}

//----------------------------------------------------------------------
//
// TestgetassocdataCmd --
//
//	This procedure implements the "testgetassocdata" command. It is
//	used to test Tcl_GetAssocData.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestgetassocdataCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2719:1: */
	bp := tls.Alloc(64)
	defer tls.Free(64)

	var res uintptr

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+2399 /* " data_key\"" */, uintptr(0)))
		return 1
	}
	res = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), uintptr(0))
	if res != uintptr(0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, res, uintptr(0)))
	}
	return 0
}

//----------------------------------------------------------------------
//
// TestgetplatformCmd --
//
//	This procedure implements the "testgetplatform" command. It is
//	used to retrievel the value of the tclPlatform global variable.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestgetplatformCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2757:1: */
	bp := tls.Alloc(56)
	defer tls.Free(56)

	var platform uintptr

	platform = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclIntStubsPtr + 904)))(tls)

	if argc != 1 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			uintptr(0)))
		return 1
	}

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+32, platformStrings[*(*TclPlatformType)(unsafe.Pointer(platform))], uintptr(0)))
	return 0
}

var platformStrings = [3]uintptr{ts + 3894 /* "unix" */, ts + 3899 /* "mac" */, ts + 3903 /* "windows" */} /* tclTest.c:2763:23 */

//----------------------------------------------------------------------
//
// TestinterpdeleteCmd --
//
//	This procedure tests the code in tclInterp.c that deals with
//	interpreter deletion. It deletes a user-specified interpreter
//	from the hierarchy, and subsequent code checks integrity.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Deletes one or more interpreters.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestinterpdeleteCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2798:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	var slaveToDelete uintptr

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+3911 /* " path\"" */, uintptr(0)))
		return 1
	}
	slaveToDelete = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 696)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))
	if slaveToDelete == uintptr(0) {
		return 1
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 448)))(tls, slaveToDelete)
	return 0
}

//----------------------------------------------------------------------
//
// TestlinkCmd --
//
//	This procedure implements the "testlink" command.  It is used
//	to test Tcl_LinkVar and related library procedures.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes various variable links, plus returns
//	values of the linked variables.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestlinkCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:2839:1: */
	bp := tls.Alloc(352)
	defer tls.Free(352)

	// var buffer [54]int8 at bp+252, 54

	// var writable int32 at bp+248, 4

	var flag int32
	var tmp uintptr

	if argc < 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),

			ts+3918 /* " option ?arg arg..." */, uintptr(0)))
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		if argc != 16 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1482,
				*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+1550 /* " " */, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),

				ts+3985 /* " intRO realRO bo..." */, uintptr(0)))
			return 1
		}
		if created != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4093)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4097)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4102)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4107)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4114)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4119)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4124)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+2562)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4130)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4137)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4142)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4147)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4153)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4159)
		}
		created = 1
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4093, uintptr(unsafe.Pointer(&intVar)),
			1|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4097, uintptr(unsafe.Pointer(&realVar)),
			2|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4102, uintptr(unsafe.Pointer(&boolVar)),
			3|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4107, uintptr(unsafe.Pointer(&stringVar)),
			4|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(6)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4114, uintptr(unsafe.Pointer(&wideVar)),
			5|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(7)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4119, uintptr(unsafe.Pointer(&charVar)),
			6|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(8)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4124, uintptr(unsafe.Pointer(&ucharVar)),
			7|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(9)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+2562, uintptr(unsafe.Pointer(&shortVar)),
			8|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(10)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4130, uintptr(unsafe.Pointer(&ushortVar)),
			9|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(11)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4137, uintptr(unsafe.Pointer(&uintVar)),
			10|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(12)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4142, uintptr(unsafe.Pointer(&longVar)),
			11|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(13)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4147, uintptr(unsafe.Pointer(&ulongVar)),
			12|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(14)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4153, uintptr(unsafe.Pointer(&floatVar)),
			13|flag) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 132)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(15)*4)), bp+248) != 0 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 248 /* writable */)) != 0 {
			flag = 0
		} else {
			flag = 0x80
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 756)))(tls, interp, ts+4159, uintptr(unsafe.Pointer(&uwideVar)),
			14|flag) != 0 {
			return 1
		}

	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416 /* "delete" */) == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4093)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4097)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4102)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4107)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4114)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4119)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4124)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+2562)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4130)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4137)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4142)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4147)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4153)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1012)))(tls, interp, ts+4159)
		created = 0
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1534 /* "get" */) == 0 {
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(intVar))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, float64, uintptr))(unsafe.Pointer(tclStubsPtr + 816)))(tls, uintptr(0), realVar, bp+252)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(boolVar))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
			if stringVar == uintptr(0) {
				return ts + 2494 /* "-" */
			}
			return stringVar
		}())
		// Wide ints only have an object-based interface.
		tmp = (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, wideVar)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, tmp))
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = tmp
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(int32(charVar)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(int32(ucharVar)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(int32(shortVar)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(int32(ushortVar)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+252, int32(int32(uintVar)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		tmp = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, longVar)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, tmp))
		for ok1 := true; ok1; ok1 = 0 != 0 {
			var _objPtr uintptr = tmp
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		tmp = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, int32(ulongVar))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, tmp))
		for ok2 := true; ok2; ok2 = 0 != 0 {
			var _objPtr uintptr = tmp
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		(*(*func(*libc.TLS, uintptr, float64, uintptr))(unsafe.Pointer(tclStubsPtr + 816)))(tls, uintptr(0), float64(floatVar), bp+252)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+252)
		tmp = (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, Tcl_WideInt(uwideVar))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, tmp))
		for ok3 := true; ok3; ok3 = 0 != 0 {
			var _objPtr uintptr = tmp
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+4165 /* "set" */) == 0 {
		// var v int32 at bp+308, 4

		if argc != 16 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+96, ts+1482,
				*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+1550 /* " " */, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),

				ts+4169 /* " intValue realVa..." */, uintptr(0)))
			return 1
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), uintptr(unsafe.Pointer(&intVar))) != 0 {
				return 1
			}
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 144)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), uintptr(unsafe.Pointer(&realVar))) != 0 {
				return 1
			}
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), uintptr(unsafe.Pointer(&boolVar))) != 0 {
				return 1
			}
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)) + uintptr(0)))) != 0 {
			if stringVar != uintptr(0) {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, stringVar)
			}
			if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), ts+2494 /* "-" */) == 0 {
				stringVar = uintptr(0)
			} else {
				stringVar = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)))+size_t(1))
				libc.Xstrcpy(tls, stringVar, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)))
			}
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(6)*4)) + uintptr(0)))) != 0 {
			tmp = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(6)*4)), -1)
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1956)))(tls, interp, tmp, uintptr(unsafe.Pointer(&wideVar))) != 0 {
				for ok4 := true; ok4; ok4 = 0 != 0 {
					var _objPtr uintptr = tmp
					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
						(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
					}
				}
				return 1
			}
			for ok5 := true; ok5; ok5 = 0 != 0 {
				var _objPtr uintptr = tmp
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(7)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(7)*4)), bp+308) != 0 {
				return 1
			}
			charVar = int8(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(8)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(8)*4)), bp+308) != 0 {
				return 1
			}
			ucharVar = uint8(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(9)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(9)*4)), bp+308) != 0 {
				return 1
			}
			shortVar = int16(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(10)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(10)*4)), bp+308) != 0 {
				return 1
			}
			ushortVar = uint16(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(11)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(11)*4)), bp+308) != 0 {
				return 1
			}
			uintVar = uint32(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(12)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(12)*4)), bp+308) != 0 {
				return 1
			}
			longVar = int32(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(13)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(13)*4)), bp+308) != 0 {
				return 1
			}
			ulongVar = uint32(*(*int32)(unsafe.Pointer(bp + 308 /* v */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(14)*4)) + uintptr(0))) != 0 {
			// var d float64 at bp+312, 8

			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 144)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(14)*4)), bp+312) != 0 {
				return 1
			}
			floatVar = float32(*(*float64)(unsafe.Pointer(bp + 312 /* d */)))
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(15)*4)) + uintptr(0))) != 0 {
			// var w Tcl_WideInt at bp+320, 8

			tmp = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(15)*4)), -1)
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1956)))(tls, interp, tmp, bp+320) != 0 {
				for ok6 := true; ok6; ok6 = 0 != 0 {
					var _objPtr uintptr = tmp
					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
						(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
					}
				}
				return 1
			}
			for ok7 := true; ok7; ok7 = 0 != 0 {
				var _objPtr uintptr = tmp
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			uwideVar = Tcl_WideUInt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 320 /* w */)))
		}
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+4319 /* "update" */) == 0 {
		// var v int32 at bp+328, 4

		if argc != 16 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+152, ts+1482,
				*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+1550 /* " " */, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),

				ts+4169 /* " intValue realVa..." */, uintptr(0)))
			return 1
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), uintptr(unsafe.Pointer(&intVar))) != 0 {
				return 1
			}
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4093)
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 144)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), uintptr(unsafe.Pointer(&realVar))) != 0 {
				return 1
			}
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4097)
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)) + uintptr(0)))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), uintptr(unsafe.Pointer(&boolVar))) != 0 {
				return 1
			}
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4102)
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)) + uintptr(0)))) != 0 {
			if stringVar != uintptr(0) {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, stringVar)
			}
			if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), ts+2494 /* "-" */) == 0 {
				stringVar = uintptr(0)
			} else {
				stringVar = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)))+size_t(1))
				libc.Xstrcpy(tls, stringVar, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)))
			}
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4107)
		}
		if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(6)*4)) + uintptr(0)))) != 0 {
			tmp = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(6)*4)), -1)
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1956)))(tls, interp, tmp, uintptr(unsafe.Pointer(&wideVar))) != 0 {
				for ok8 := true; ok8; ok8 = 0 != 0 {
					var _objPtr uintptr = tmp
					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
						(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
					}
				}
				return 1
			}
			for ok9 := true; ok9; ok9 = 0 != 0 {
				var _objPtr uintptr = tmp
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4114)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(7)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(7)*4)), bp+328) != 0 {
				return 1
			}
			charVar = int8(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4119)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(8)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(8)*4)), bp+328) != 0 {
				return 1
			}
			ucharVar = uint8(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4124)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(9)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(9)*4)), bp+328) != 0 {
				return 1
			}
			shortVar = int16(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+2562)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(10)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(10)*4)), bp+328) != 0 {
				return 1
			}
			ushortVar = uint16(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4130)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(11)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(11)*4)), bp+328) != 0 {
				return 1
			}
			uintVar = uint32(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4137)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(12)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(12)*4)), bp+328) != 0 {
				return 1
			}
			longVar = int32(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4142)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(13)*4)) + uintptr(0))) != 0 {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(13)*4)), bp+328) != 0 {
				return 1
			}
			ulongVar = uint32(*(*int32)(unsafe.Pointer(bp + 328 /* v */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4147)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(14)*4)) + uintptr(0))) != 0 {
			// var d float64 at bp+336, 8

			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 144)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(14)*4)), bp+336) != 0 {
				return 1
			}
			floatVar = float32(*(*float64)(unsafe.Pointer(bp + 336 /* d */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4153)
		}
		if *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(15)*4)) + uintptr(0))) != 0 {
			// var w Tcl_WideInt at bp+344, 8

			tmp = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(15)*4)), -1)
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1956)))(tls, interp, tmp, bp+344) != 0 {
				for ok10 := true; ok10; ok10 = 0 != 0 {
					var _objPtr uintptr = tmp
					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
						(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
					}
				}
				return 1
			}
			for ok11 := true; ok11; ok11 = 0 != 0 {
				var _objPtr uintptr = tmp
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			uwideVar = Tcl_WideUInt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 344 /* w */)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1036)))(tls, interp, ts+4159)
		}
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+208, ts+1428, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
			ts+4326 /* "\": should be cre..." */, uintptr(0)))
		return 1
	}
	return 0
}

var intVar int32 = 43                                      /* tclTest.c:2845:16 */
var boolVar int32 = 4                                      /* tclTest.c:2846:16 */
var realVar float64 = 1.23                                 /* tclTest.c:2847:19 */
var wideVar Tcl_WideInt = Tcl_WideInt(79)                  /* tclTest.c:2848:24 */
var stringVar uintptr = uintptr(0)                         /* tclTest.c:2849:17 */
var charVar int8 = int8('@')                               /* tclTest.c:2850:17 */
var ucharVar uint8 = uint8(130)                            /* tclTest.c:2851:26 */
var shortVar int16 = int16(3000)                           /* tclTest.c:2852:18 */
var ushortVar uint16 = uint16(60000)                       /* tclTest.c:2853:27 */
var uintVar uint32 = 0xbeeffeed                            /* tclTest.c:2854:25 */
var longVar int32 = 123456789                              /* tclTest.c:2855:17 */
var ulongVar uint32 = 3456789012                           /* tclTest.c:2856:26 */
var floatVar float32 = 4.5                                 /* tclTest.c:2857:18 */
var uwideVar Tcl_WideUInt = Tcl_WideUInt(Tcl_WideInt(123)) /* tclTest.c:2858:25 */
var created int32 = 0                                      /* tclTest.c:2859:16 */

//----------------------------------------------------------------------
//
// TestlocaleCmd --
//
//	This procedure implements the "testlocale" command.  It is used
//	to test the effects of setting different locales in Tcl.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Modifies the current C locale.
//
//----------------------------------------------------------------------

func TestlocaleCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3307:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var index int32 at bp, 4

	var locale uintptr

	// LC_CTYPE, etc. correspond to the indices for the strings.

	if objc < 2 || objc > 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+4375)
		return 1
	}

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&optionStrings1)), int32(unsafe.Sizeof(uintptr(0))), ts+3360, 0, bp) != 0 {
		return 1
	}

	if objc == 3 {
		locale = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	} else {
		locale = uintptr(0)
	}
	locale = libc.Xsetlocale(tls, lcTypes[*(*int32)(unsafe.Pointer(bp /* index */))], locale)
	if locale != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 268)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), locale, -1)
	}
	return 0
}

var optionStrings1 = [7]uintptr{
	ts + 4393 /* "ctype" */, ts + 4399 /* "numeric" */, ts + 4407 /* "time" */, ts + 4412 /* "collate" */, ts + 4420, /* "monetary" */
	ts + 4429 /* "all" */, uintptr(0),
} /* tclTest.c:3316:23 */
var lcTypes = [6]int32{
	2, 4, 5, 1, 3,
	0,
} /* tclTest.c:3320:22 */

//----------------------------------------------------------------------
//
// TestMathFunc --
//
//	This is a user-defined math procedure to test out math procedures
//	with no arguments.
//
// Results:
//	A normal Tcl completion code.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestMathFunc(tls *libc.TLS, clientData ClientData, interp uintptr, args uintptr, resultPtr uintptr) int32 { /* tclTest.c:3370:1: */
	(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_INT
	(*Tcl_Value)(unsafe.Pointer(resultPtr)).intValue = int32(int32(clientData))
	return 0
}

//----------------------------------------------------------------------
//
// TestMathFunc2 --
//
//	This is a user-defined math procedure to test out math procedures
//	that do have arguments, in this case 2.
//
// Results:
//	A normal Tcl completion code.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestMathFunc2(tls *libc.TLS, clientData ClientData, interp uintptr, args uintptr, resultPtr uintptr) int32 { /* tclTest.c:3400:1: */
	var result int32 = 0

	// Return the maximum of the two arguments with the correct type.

	if (*Tcl_Value)(unsafe.Pointer(args+uintptr(0)*24)).__type == TCL_INT {
		var i0 int32 = int32((*Tcl_Value)(unsafe.Pointer(args + uintptr(0)*24)).intValue)

		if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_INT {
			var i1 int32 = int32((*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).intValue)

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_INT
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).intValue = func() int32 {
				if i0 > i1 {
					return int32(i0)
				}
				return int32(i1)
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_DOUBLE {
			var d0 float64 = float64(i0)
			var d1 float64 = (*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).doubleValue

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_DOUBLE
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).doubleValue = func() float64 {
				if d0 > d1 {
					return d0
				}
				return d1
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_WIDE_INT {
			var w0 Tcl_WideInt = Tcl_WideInt(int32(i0))
			var w1 Tcl_WideInt = (*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).wideValue

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_WIDE_INT
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).wideValue = func() int64 {
				if w0 > w1 {
					return w0
				}
				return w1
			}()
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+4433, uintptr(0))
			result = 1
		}
	} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(0)*24)).__type == TCL_DOUBLE {
		var d0 float64 = (*Tcl_Value)(unsafe.Pointer(args + uintptr(0)*24)).doubleValue

		if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_INT {
			var d1 float64 = float64((*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).intValue)

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_DOUBLE
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).doubleValue = func() float64 {
				if d0 > d1 {
					return d0
				}
				return d1
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_DOUBLE {
			var d1 float64 = (*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).doubleValue

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_DOUBLE
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).doubleValue = func() float64 {
				if d0 > d1 {
					return d0
				}
				return d1
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_WIDE_INT {
			var d1 float64 = float64((*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).wideValue)

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_DOUBLE
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).doubleValue = func() float64 {
				if d0 > d1 {
					return d0
				}
				return d1
			}()
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+4433, uintptr(0))
			result = 1
		}
	} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(0)*24)).__type == TCL_WIDE_INT {
		var w0 Tcl_WideInt = (*Tcl_Value)(unsafe.Pointer(args + uintptr(0)*24)).wideValue

		if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_INT {
			var w1 Tcl_WideInt = Tcl_WideInt((*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).intValue)

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_WIDE_INT
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).wideValue = func() int64 {
				if w0 > w1 {
					return w0
				}
				return w1
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_DOUBLE {
			var d0 float64 = float64(w0)
			var d1 float64 = (*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).doubleValue

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_DOUBLE
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).doubleValue = func() float64 {
				if d0 > d1 {
					return d0
				}
				return d1
			}()
		} else if (*Tcl_Value)(unsafe.Pointer(args+uintptr(1)*24)).__type == TCL_WIDE_INT {
			var w1 Tcl_WideInt = (*Tcl_Value)(unsafe.Pointer(args + uintptr(1)*24)).wideValue

			(*Tcl_Value)(unsafe.Pointer(resultPtr)).__type = TCL_WIDE_INT
			(*Tcl_Value)(unsafe.Pointer(resultPtr)).wideValue = func() int64 {
				if w0 > w1 {
					return w0
				}
				return w1
			}()
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+4433, uintptr(0))
			result = 1
		}
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+4458, uintptr(0))
		result = 1
	}
	return result
}

//----------------------------------------------------------------------
//
// CleanupTestSetassocdataTests --
//
//	This function is called when an interpreter is deleted to clean
//	up any data left over from running the testsetassocdata command.
//
// Results:
//	None.
//
// Side effects:
//	Releases storage.
//
//----------------------------------------------------------------------
// ARGSUSED
func CleanupTestSetassocdataTests(tls *libc.TLS, clientData ClientData, interp uintptr) { /* tclTest.c:3507:1: */
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, clientData)
}

//----------------------------------------------------------------------
//
// TestparserObjCmd --
//
//	This procedure implements the "testparser" command.  It is
//	used for testing the new Tcl script parser in Tcl 8.1.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestparserObjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3532:1: */
	bp := tls.Alloc(384)
	defer tls.Free(384)

	var script uintptr
	// var length int32 at bp+4, 4

	// var dummy int32 at bp, 4

	// var parse Tcl_Parse at bp+8, 376

	if objc != 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+4483)
		return 1
	}
	script = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp)
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+4) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp + 4 /* length */)) == 0 {
		*(*int32)(unsafe.Pointer(bp + 4 /* length */)) = *(*int32)(unsafe.Pointer(bp /* dummy */))
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, int32, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1452)))(tls, interp, script, *(*int32)(unsafe.Pointer(bp + 4)), 0, bp+8) != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4497)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, (*Tcl_Parse)(unsafe.Pointer(bp+8)).term)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4526)
		return 1
	}

	// The parse completed successfully.  Just print out the contents
	// of the parse structure into the interpreter's result.

	PrintParse(tls, interp, bp+8 /* &parse */)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1440)))(tls, bp+8)
	return 0
}

//----------------------------------------------------------------------
//
// TestexprparserObjCmd --
//
//	This procedure implements the "testexprparser" command.  It is
//	used for testing the new Tcl expression parser in Tcl 8.1.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexprparserObjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3588:1: */
	bp := tls.Alloc(384)
	defer tls.Free(384)

	var script uintptr
	// var length int32 at bp+4, 4

	// var dummy int32 at bp, 4

	// var parse Tcl_Parse at bp+8, 376

	if objc != 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+4529)
		return 1
	}
	script = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp)
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+4) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp + 4 /* length */)) == 0 {
		*(*int32)(unsafe.Pointer(bp + 4 /* length */)) = *(*int32)(unsafe.Pointer(bp /* dummy */))
	}
	(*Tcl_Parse)(unsafe.Pointer(bp + 8 /* &parse */)).commentStart = uintptr(0)
	(*Tcl_Parse)(unsafe.Pointer(bp + 8 /* &parse */)).commentSize = 0
	(*Tcl_Parse)(unsafe.Pointer(bp + 8 /* &parse */)).commandStart = uintptr(0)
	(*Tcl_Parse)(unsafe.Pointer(bp + 8 /* &parse */)).commandSize = 0
	if (*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1456)))(tls, interp, script, *(*int32)(unsafe.Pointer(bp + 4)), bp+8) != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4541)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, (*Tcl_Parse)(unsafe.Pointer(bp+8)).term)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4526)
		return 1
	}

	// The parse completed successfully.  Just print out the contents
	// of the parse structure into the interpreter's result.

	PrintParse(tls, interp, bp+8 /* &parse */)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1440)))(tls, bp+8)
	return 0
}

//----------------------------------------------------------------------
//
// PrintParse --
//
//	This procedure prints out the contents of a Tcl_Parse structure
//	in the result of an interpreter.
//
// Results:
//	Interp's result is set to a prettily formatted version of the
//	contents of parsePtr.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func PrintParse(tls *libc.TLS, interp uintptr, parsePtr uintptr) { /* tclTest.c:3649:1: */
	var objPtr uintptr
	var typeString uintptr
	var tokenPtr uintptr
	var i int32

	objPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp)
	if (*Tcl_Parse)(unsafe.Pointer(parsePtr)).commentSize > 0 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
			(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*Tcl_Parse)(unsafe.Pointer(parsePtr)).commentStart,
				(*Tcl_Parse)(unsafe.Pointer(parsePtr)).commentSize))
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+2494, 1))
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
		(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*Tcl_Parse)(unsafe.Pointer(parsePtr)).commandStart, (*Tcl_Parse)(unsafe.Pointer(parsePtr)).commandSize))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
		(*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*Tcl_Parse)(unsafe.Pointer(parsePtr)).numWords))
	for i = 0; i < (*Tcl_Parse)(unsafe.Pointer(parsePtr)).numTokens; i++ {
		tokenPtr = (*Tcl_Parse)(unsafe.Pointer(parsePtr)).tokenPtr + uintptr(i)*16
		switch (*Tcl_Token)(unsafe.Pointer(tokenPtr)).__type {
		case 256:
			typeString = ts + 4568 /* "expand" */
			break
		case 1:
			typeString = ts + 4575 /* "word" */
			break
		case 2:
			typeString = ts + 215 /* "simple" */
			break
		case 4:
			typeString = ts + 4580 /* "text" */
			break
		case 8:
			typeString = ts + 4585 /* "backslash" */
			break
		case 16:
			typeString = ts + 4595 /* "command" */
			break
		case 32:
			typeString = ts + 4603 /* "variable" */
			break
		case 64:
			typeString = ts + 4612 /* "subexpr" */
			break
		case 128:
			typeString = ts + 4620 /* "operator" */
			break
		default:
			typeString = ts + 1538 /* "??" */
			break
		}
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
			(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, typeString, -1))
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
			(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*Tcl_Token)(unsafe.Pointer(tokenPtr)).start, (*Tcl_Token)(unsafe.Pointer(tokenPtr)).size))
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
			(*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*Tcl_Token)(unsafe.Pointer(tokenPtr)).numComponents))
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), objPtr,
		(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*Tcl_Parse)(unsafe.Pointer(parsePtr)).commandStart+uintptr((*Tcl_Parse)(unsafe.Pointer(parsePtr)).commandSize),
			-1))
}

//----------------------------------------------------------------------
//
// TestparsevarObjCmd --
//
//	This procedure implements the "testparsevar" command.  It is
//	used for testing Tcl_ParseVar.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestparsevarObjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3735:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var value uintptr
	var name uintptr
	// var termPtr uintptr at bp, 4

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+4629)
		return 1
	}
	name = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1088)))(tls, interp, name, bp)
	if value == uintptr(0) {
		return 1
	}

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, value)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp)))
	return 0
}

//----------------------------------------------------------------------
//
// TestparsevarnameObjCmd --
//
//	This procedure implements the "testparsevarname" command.  It is
//	used for testing the new Tcl script parser in Tcl 8.1.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestparsevarnameObjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3776:1: */
	bp := tls.Alloc(388)
	defer tls.Free(388)

	var script uintptr
	// var append int32 at bp+8, 4

	// var length int32 at bp+4, 4

	// var dummy int32 at bp, 4

	// var parse Tcl_Parse at bp+12, 376

	if objc != 4 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+4637)
		return 1
	}
	script = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp)
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+4) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp + 4 /* length */)) == 0 {
		*(*int32)(unsafe.Pointer(bp + 4 /* length */)) = *(*int32)(unsafe.Pointer(bp /* dummy */))
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+8) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1464)))(tls, interp, script, *(*int32)(unsafe.Pointer(bp + 4)), bp+12, *(*int32)(unsafe.Pointer(bp + 8))) != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4497)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, (*Tcl_Parse)(unsafe.Pointer(bp+12)).term)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 272)))(tls, interp, ts+4526)
		return 1
	}

	// The parse completed successfully.  Just print out the contents
	// of the parse structure into the interpreter's result.

	(*Tcl_Parse)(unsafe.Pointer(bp + 12 /* &parse */)).commentSize = 0
	(*Tcl_Parse)(unsafe.Pointer(bp + 12 /* &parse */)).commandStart = script + uintptr((*Tcl_Token)(unsafe.Pointer((*Tcl_Parse)(unsafe.Pointer(bp+12)).tokenPtr)).size)
	(*Tcl_Parse)(unsafe.Pointer(bp + 12 /* &parse */)).commandSize = 0
	PrintParse(tls, interp, bp+12 /* &parse */)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1440)))(tls, bp+12)
	return 0
}

//----------------------------------------------------------------------
//
// TestregexpObjCmd --
//
//	This procedure implements the "testregexp" command. It is used to give
//	a direct interface for regexp flags. It's identical to
//	Tcl_RegexpObjCmd except for the -xflags option, and the consequences
//	thereof (including the REG_EXPECT kludge).
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	See the user documentation.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestregexpObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:3841:1: */
	bp := tls.Alloc(272)
	defer tls.Free(272)

	var i int32
	var ii int32
	var indices int32
	// var stringLength int32 at bp+124, 4

	var match int32
	var about int32
	var hasxflags int32
	// var cflags int32 at bp+128, 4

	// var eflags int32 at bp+132, 4

	var regExpr Tcl_RegExp
	var string uintptr
	var objPtr uintptr
	// var info Tcl_RegExpInfo at bp+192, 16

	var name uintptr
	// var index int32 at bp+120, 4

	var varName uintptr
	var value uintptr
	// var start int32 at bp+136, 4

	// var end int32 at bp+140, 4

	// var resinfo [48]int8 at bp+144, 48

	var varName1 uintptr
	var value1 uintptr
	// var resinfo1 [48]int8 at bp+208, 48

	// var objs [2]uintptr at bp+264, 8

	// var start1 int32 at bp+256, 4

	// var end1 int32 at bp+260, 4

	var newPtr uintptr
	var varPtr uintptr
	var valuePtr uintptr

	indices = 0
	about = 0
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) = 000003
	*(*int32)(unsafe.Pointer(bp + 132 /* eflags */)) = 0
	hasxflags = 0

	i = 1
__1:
	if !(i < objc) {
		goto __3
	}

	name = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
	if !(int32(*(*int8)(unsafe.Pointer(name + uintptr(0)))) != '-') {
		goto __4
	}
	goto __3
__4:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), uintptr(unsafe.Pointer(&options1)), int32(unsafe.Sizeof(uintptr(0))), ts+4658, 1, bp+120) != 0) {
		goto __5
	}
	return 1
__5:
	;
	switch uint32(*(*int32)(unsafe.Pointer(bp + 120 /* index */))) {
	case uint32(0) /* REGEXP_INDICES */ :
		goto __7
	case uint32(1) /* REGEXP_NOCASE */ :
		goto __8
	case uint32(2) /* REGEXP_ABOUT */ :
		goto __9
	case uint32(3) /* REGEXP_EXPANDED */ :
		goto __10
	case uint32(4) /* REGEXP_MULTI */ :
		goto __11
	case uint32(5) /* REGEXP_NOCROSS */ :
		goto __12
	case uint32(6) /* REGEXP_NEWL */ :
		goto __13
	case uint32(7) /* REGEXP_XFLAGS */ :
		goto __14
	case uint32(8) /* REGEXP_LAST */ :
		goto __15
	}
	goto __6
__7:
	indices = 1
	goto __6
__8:
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) |= 000010
	goto __6
__9:
	about = 1
	goto __6
__10:
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) |= 000040
	goto __6
__11:
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) |= 000300
	goto __6
__12:
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) |= 000100
	goto __6
__13:
	*(*int32)(unsafe.Pointer(bp + 128 /* cflags */)) |= 000200
	goto __6
__14:
	hasxflags = 1
	goto __6
__15:
	i++
	goto endOfForLoop
__6:
	;
	goto __2
__2:
	i++
	goto __1
	goto __3
__3:
	;

endOfForLoop:
	if !(objc-i < hasxflags+2-about) {
		goto __16
	}
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv,
		ts+4665 /* "?-switch ...? ex..." */)
	return 1
__16:
	;
	objc = objc - i
	objv += 4 * uintptr(i)

	if !(hasxflags != 0) {
		goto __17
	}
	string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(0)*4)), bp+124)
	TestregexpXflags(tls, string, *(*int32)(unsafe.Pointer(bp + 124 /* stringLength */)), bp+128 /* &cflags */, bp+132 /* &eflags */)
	objc--
	objv += 4
__17:
	;

	regExpr = (*(*func(*libc.TLS, uintptr, uintptr, int32) Tcl_RegExp)(unsafe.Pointer(tclStubsPtr + 1432)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(0)*4)), *(*int32)(unsafe.Pointer(bp + 128)))
	if !(regExpr == uintptr(0)) {
		goto __18
	}
	return 1
__18:
	;

	if !(about != 0) {
		goto __19
	}
	if !((*(*func(*libc.TLS, uintptr, Tcl_RegExp) int32)(unsafe.Pointer(tclIntStubsPtr + 608)))(tls, interp, regExpr) < 0) {
		goto __20
	}
	return 1
__20:
	;
	return 0
__19:
	;

	objPtr = *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))
	match = (*(*func(*libc.TLS, uintptr, Tcl_RegExp, uintptr, int32, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1512)))(tls, interp, regExpr, objPtr, 0,
		objc-2, *(*int32)(unsafe.Pointer(bp + 132)))

	if !(match < 0) {
		goto __21
	}
	return 1
__21:
	;
	if !(match == 0) {
		goto __22
	}
	// Set the interpreter's object result to an integer object w/
	// value 0.

	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), 0)
	if !(objc > 2 && *(*int32)(unsafe.Pointer(bp + 128))&001000 != 0 && indices != 0) {
		goto __23
	}

	varName = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	(*(*func(*libc.TLS, Tcl_RegExp, int32, uintptr, uintptr))(unsafe.Pointer(tclIntStubsPtr + 612)))(tls, regExpr, -1, bp+136, bp+140)
	libc.Xsprintf(tls, bp+144 /* &resinfo[0] */, ts+4719 /* "%d %d" */, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 136 /* start */)), *(*int32)(unsafe.Pointer(bp + 140))-1))
	value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, varName, uintptr(0), bp+144, 0)
	if !(value == uintptr(0)) {
		goto __25
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+4725,
		varName, ts+1803 /* "\"" */, uintptr(0)))
	return 1
__25:
	;
	goto __24
__23:
	if !(*(*int32)(unsafe.Pointer(bp + 128))&001000 != 0) {
		goto __26
	}

	(*(*func(*libc.TLS, Tcl_RegExp, uintptr))(unsafe.Pointer(tclStubsPtr + 1516)))(tls, regExpr, bp+192)
	varName1 = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	libc.Xsprintf(tls, bp+208 /* &resinfo1[0] */, ts+4749 /* "%ld" */, libc.VaList(bp+64, (*Tcl_RegExpInfo)(unsafe.Pointer(bp+192 /* &info */)).extendStart))
	value1 = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, varName1, uintptr(0), bp+208, 0)
	if !(value1 == uintptr(0)) {
		goto __27
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+80, ts+4725,
		varName1, ts+1803 /* "\"" */, uintptr(0)))
	return 1
__27:
	;
__26:
	;
__24:
	;
	return 0
__22:
	;

	// If additional variable names have been specified, return
	// index information in those variables.

	objc = objc - 2
	objv += 4 * uintptr(2)

	(*(*func(*libc.TLS, Tcl_RegExp, uintptr))(unsafe.Pointer(tclStubsPtr + 1516)))(tls, regExpr, bp+192)
	i = 0
__28:
	if !(i < objc) {
		goto __30
	}

	varPtr = *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4))
	if *(*int32)(unsafe.Pointer(bp + 128))&001000 != 0 && i == objc-1 {
		ii = -1
	} else {
		ii = i
	}
	if !(indices != 0) {
		goto __31
	}

	if !(ii == -1) {
		goto __33
	}
	(*(*func(*libc.TLS, Tcl_RegExp, int32, uintptr, uintptr))(unsafe.Pointer(tclIntStubsPtr + 612)))(tls, regExpr, ii, bp+256, bp+260)
	goto __34
__33:
	if !(ii > (*Tcl_RegExpInfo)(unsafe.Pointer(bp+192)).nsubs) {
		goto __35
	}
	*(*int32)(unsafe.Pointer(bp + 256 /* start1 */)) = -1
	*(*int32)(unsafe.Pointer(bp + 260 /* end1 */)) = -1
	goto __36
__35:
	*(*int32)(unsafe.Pointer(bp + 256 /* start1 */)) = int32((*Tcl_RegExpIndices)(unsafe.Pointer((*Tcl_RegExpInfo)(unsafe.Pointer(bp+192 /* &info */)).matches + uintptr(ii)*8)).start)
	*(*int32)(unsafe.Pointer(bp + 260 /* end1 */)) = int32((*Tcl_RegExpIndices)(unsafe.Pointer((*Tcl_RegExpInfo)(unsafe.Pointer(bp+192 /* &info */)).matches + uintptr(ii)*8)).end)
__36:
	;
__34:
	;

	// Adjust index so it refers to the last character in the match
	// instead of the first character after the match.

	if !(*(*int32)(unsafe.Pointer(bp + 260)) >= 0) {
		goto __37
	}
	*(*int32)(unsafe.Pointer(bp + 260 /* end1 */))--
__37:
	;

	*(*uintptr)(unsafe.Pointer(bp + 264 /* &objs[0] */ + uintptr(0)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, int32(*(*int32)(unsafe.Pointer(bp + 256))))
	*(*uintptr)(unsafe.Pointer(bp + 264 /* &objs[0] */ + uintptr(1)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, int32(*(*int32)(unsafe.Pointer(bp + 260))))

	newPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 2, bp+264)
	goto __32
__31:
	if !(ii == -1) {
		goto __38
	}
	(*(*func(*libc.TLS, Tcl_RegExp, int32, uintptr, uintptr))(unsafe.Pointer(tclIntStubsPtr + 612)))(tls, regExpr, ii, bp+256, bp+260)
	newPtr = (*(*func(*libc.TLS, uintptr, int32, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1540)))(tls, objPtr, *(*int32)(unsafe.Pointer(bp + 256)), *(*int32)(unsafe.Pointer(bp + 260)))
	goto __39
__38:
	if !(ii > (*Tcl_RegExpInfo)(unsafe.Pointer(bp+192)).nsubs) {
		goto __40
	}
	newPtr = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
	goto __41
__40:
	newPtr = (*(*func(*libc.TLS, uintptr, int32, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1540)))(tls, objPtr, int32((*Tcl_RegExpIndices)(unsafe.Pointer((*Tcl_RegExpInfo)(unsafe.Pointer(bp+192)).matches+uintptr(ii)*8)).start),
		int32((*Tcl_RegExpIndices)(unsafe.Pointer((*Tcl_RegExpInfo)(unsafe.Pointer(bp+192)).matches+uintptr(ii)*8)).end-1))
__41:
	;
__39:
	;
__32:
	;
	valuePtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 792)))(tls, interp, varPtr, uintptr(0), newPtr, 0x200)
	if !(valuePtr == uintptr(0)) {
		goto __42
	}
	return 1
__42:
	;
	goto __29
__29:
	i++
	goto __28
	goto __30
__30:
	;

	// Set the interpreter's object result to an integer object w/ value 1.

	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), 1)
	return 0
}

var options1 = [10]uintptr{
	ts + 4753 /* "-indices" */, ts + 4762 /* "-nocase" */, ts + 4770 /* "-about" */, ts + 4777, /* "-expanded" */
	ts + 4787 /* "-line" */, ts + 4793 /* "-linestop" */, ts + 4803, /* "-lineanchor" */
	ts + 4815, /* "-xflags" */
	ts + 4823 /* "--" */, uintptr(0),
} /* tclTest.c:3853:23 */

//---------------------------------------------------------------------------
//
// TestregexpXflags --
//
//	Parse a string of extended regexp flag letters, for testing.
//
// Results:
//	No return value (you're on your own for errors here).
//
// Side effects:
//	Modifies *cflagsPtr, a regcomp flags word, and *eflagsPtr, a
//	regexec flags word, as appropriate.
//
//----------------------------------------------------------------------

func TestregexpXflags(tls *libc.TLS, string uintptr, length int32, cflagsPtr uintptr, eflagsPtr uintptr) { /* tclTest.c:4074:1: */
	var i int32
	var cflags int32
	var eflags int32

	cflags = *(*int32)(unsafe.Pointer(cflagsPtr))
	eflags = *(*int32)(unsafe.Pointer(eflagsPtr))
	for i = 0; i < length; i++ {
		switch int32(*(*int8)(unsafe.Pointer(string + uintptr(i)))) {
		case 'a':
			cflags = cflags | 000002
			break
		case 'b':
			cflags = cflags & ^libc.Int32(000003)
			break
		case 'c':
			cflags = cflags | 001000
			break
		case 'e':
			cflags = cflags & ^libc.Int32(000003)
			cflags = cflags | 000001
			break
		case 'q':
			cflags = cflags & ^libc.Int32(000003)
			cflags = cflags | 000004
			break
		case 'o': // o for opaque
			cflags = cflags | 000020
			break
		case 's': // s for start
			cflags = cflags | 002000
			break
		case '+':
			cflags = cflags | 010000
			break
		case ',':
			cflags = cflags | 020000
			break
		case '.':
			cflags = cflags | 004000
			break
		case ':':
			eflags = eflags | 0020
			break
		case ';':
			eflags = eflags | 0010
			break
		case '^':
			eflags = eflags | 0001
			break
		case '$':
			eflags = eflags | 0002
			break
		case 't':
			cflags = cflags | 001000
			break
		case '%':
			eflags = eflags | 0040
			break
		}
	}

	*(*int32)(unsafe.Pointer(cflagsPtr)) = cflags
	*(*int32)(unsafe.Pointer(eflagsPtr)) = eflags
}

//----------------------------------------------------------------------
//
// TestreturnObjCmd --
//
//	This procedure implements the "testreturn" command. It is
//	used to verify that a
//		return TCL_RETURN;
//	has same behavior as
//		return Tcl_SetReturnOptions(interp, Tcl_NewObj());
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	See the user documentation.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestreturnObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:4165:1: */
	return 2
}

//----------------------------------------------------------------------
//
// TestsetassocdataCmd --
//
//	This procedure implements the "testsetassocdata" command. It is used
//	to test Tcl_SetAssocData.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Modifies or creates an association between a key and associated
//	data for this interpreter.
//
//----------------------------------------------------------------------

func TestsetassocdataCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4193:1: */
	bp := tls.Alloc(44)
	defer tls.Free(44)

	var buf uintptr
	var oldData uintptr
	// var procPtr uintptr at bp+40, 4

	if argc != 3 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+4826 /* " data_key data_i..." */, uintptr(0)))
		return 1
	}

	buf = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))+size_t(1))
	libc.Xstrcpy(tls, buf, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))

	// If we previously associated a malloced value with the variable,
	// free it before associating a new value.

	oldData = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), bp+40)
	if oldData != uintptr(0) && *(*uintptr)(unsafe.Pointer(bp + 40)) == *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr)
	}{CleanupTestSetassocdataTests})) {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, oldData)
	}

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 900)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr)
	}{CleanupTestSetassocdataTests})),
		buf)
	return 0
}

//----------------------------------------------------------------------
//
// TestsetplatformCmd --
//
//	This procedure implements the "testsetplatform" command. It is
//	used to change the tclPlatform global variable so all file
//	name conversions can be tested on a single platform.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Sets the tclPlatform global variable.
//
//----------------------------------------------------------------------

func TestsetplatformCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4245:1: */
	bp := tls.Alloc(64)
	defer tls.Free(64)

	var length size_t
	var platform uintptr

	platform = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclIntStubsPtr + 904)))(tls)

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+4847 /* " platform\"" */, uintptr(0)))
		return 1
	}

	length = libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))
	if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3894 /* "unix" */, length) == 0 {
		*(*TclPlatformType)(unsafe.Pointer(platform)) = TCL_PLATFORM_UNIX
	} else if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+3903 /* "windows" */, length) == 0 {
		*(*TclPlatformType)(unsafe.Pointer(platform)) = TCL_PLATFORM_WINDOWS
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+40, ts+4858 /* "unsupported plat..." */, uintptr(0)))
		return 1
	}
	return 0
}

//----------------------------------------------------------------------
//
// TeststaticpkgCmd --
//
//	This procedure implements the "teststaticpkg" command.
//	It is used to test the procedure Tcl_StaticPackage.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	When the packge given by argv[1] is loaded into an interpeter,
//	variable "x" in that interpreter is set to "loaded".
//
//----------------------------------------------------------------------

func TeststaticpkgCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4294:1: */
	bp := tls.Alloc(48)
	defer tls.Free(48)

	// var safe int32 at bp+40, 4

	// var loaded int32 at bp+44, 4

	if argc != 4 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368,
			*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+4914 /* " pkgName safe lo..." */, uintptr(0)))
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+40) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), bp+44) != 0 {
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 984)))(tls, func() uintptr {
		if *(*int32)(unsafe.Pointer(bp + 44 /* loaded */)) != 0 {
			return interp
		}
		return uintptr(0)
	}(), *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)),
		*(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr) int32
		}{StaticInitProc})), func() uintptr {
			if *(*int32)(unsafe.Pointer(bp + 40 /* safe */)) != 0 {
				return *(*uintptr)(unsafe.Pointer(&struct {
					f func(*libc.TLS, uintptr) int32
				}{StaticInitProc}))
			}
			return uintptr(0)
		}())
	return 0
}

func StaticInitProc(tls *libc.TLS, interp uintptr) int32 { /* tclTest.c:4319:1: */
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, ts+4936, uintptr(0), ts+4938, 1)
	return 0
}

//----------------------------------------------------------------------
//
// TesttranslatefilenameCmd --
//
//	This procedure implements the "testtranslatefilename" command.
//	It is used to test the Tcl_TranslateFileName command.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TesttranslatefilenameCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4345:1: */
	bp := tls.Alloc(276)
	defer tls.Free(276)

	// var buffer Tcl_DString at bp+64, 212

	var result uintptr

	if argc != 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368,
			*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+3911 /* " path\"" */, uintptr(0)))
		return 1
	}
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1004)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), bp+64)
	if result == uintptr(0) {
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, result, uintptr(0)))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp+64)
	return 0
}

//----------------------------------------------------------------------
//
// TestupvarCmd --
//
//	This procedure implements the "testupvar" command.  It is used
//	to test Tcl_UpVar and Tcl_UpVar2.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates or modifies an "upvar" reference.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestupvarCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4387:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	var flags int32 = 0

	if argc != 5 && argc != 6 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+2368,
			*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+4945 /* " level name ?nam..." */, uintptr(0)))
		return 1
	}

	if argc == 5 {
		if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), ts+3367 /* "global" */) == 0 {
			flags = 1
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), ts+4978 /* "namespace" */) == 0 {
			flags = 2
		}
		return (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1044)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), uintptr(0), *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), flags)
	} else {
		if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), ts+3367 /* "global" */) == 0 {
			flags = 1
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), ts+4978 /* "namespace" */) == 0 {
			flags = 2
		}
		return (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1044)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)),
			func() uintptr {
				if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)) + uintptr(0)))) == 0 {
					return uintptr(0)
				}
				return *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4))
			}(), *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)),
			flags)
	}
	return int32(0)
}

//----------------------------------------------------------------------
//
// TestseterrorcodeCmd --
//
//	This procedure implements the "testseterrorcodeCmd".  This tests up to
//	five elements passed to the Tcl_SetErrorCode command.
//
// Results:
//	A standard Tcl result. Always returns TCL_ERROR so that
//	the error code can be tested.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestseterrorcodeCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4440:1: */
	bp := tls.Alloc(224)
	defer tls.Free(224)

	if argc > 6 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+4988, uintptr(0))
		return 1
	}
	switch argc {
	case 1:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp, ts+5002, uintptr(0)))
		break
	case 2:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), uintptr(0)))
		break
	case 3:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), uintptr(0)))
		break
	case 4:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp+80, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), uintptr(0)))
		break
	case 5:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp+120, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), uintptr(0)))
		break
	case 6:
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 920)))(tls, interp, libc.VaList(bp+168, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)),
			*(*uintptr)(unsafe.Pointer(argv + uintptr(5)*4)), uintptr(0)))
	}
	return 1
}

//----------------------------------------------------------------------
//
// TestsetobjerrorcodeCmd --
//
//	This procedure implements the "testsetobjerrorcodeCmd".
//	This tests the Tcl_SetObjErrorCode function.
//
// Results:
//	A standard Tcl result. Always returns TCL_ERROR so that
//	the error code can be tested.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestsetobjerrorcodeCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:4493:1: */
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 944)))(tls, interp, (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, objc-1, objv+uintptr(1)*4))
	return 1
}

//----------------------------------------------------------------------
//
// TestfeventCmd --
//
//	This procedure implements the "testfevent" command.  It is
//	used for testing the "fileevent" command.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates and deletes interpreters.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestfeventCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4522:1: */
	bp := tls.Alloc(104)
	defer tls.Free(104)

	var code int32
	var chan1 Tcl_Channel

	if argc < 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+5007 /* " option ?arg ......" */, uintptr(0)))
		return 1
	}
	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+5025 /* "cmd" */) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+5029 /* " cmd script" */, uintptr(0)))
			return 1
		}
		if interp2 != uintptr(0) {
			code = (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp2, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), -1, 0x020000)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp2))
			return code
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
				libc.VaList(bp+80, ts+5041, /* "called \"testfeve..." */
					uintptr(0)))
			return 1
		}
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1409 /* "create" */) == 0 {
		if interp2 != uintptr(0) {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 448)))(tls, interp2)
		}
		interp2 = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 384)))(tls)
		return (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 728)))(tls, interp2)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+1416 /* "delete" */) == 0 {
		if interp2 != uintptr(0) {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 448)))(tls, interp2)
		}
		interp2 = uintptr(0)
	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), ts+5093 /* "share" */) == 0 {
		if interp2 != uintptr(0) {
			chan1 = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) Tcl_Channel)(unsafe.Pointer(tclStubsPtr + 612)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), uintptr(0))
			if chan1 == uintptr(0) {
				return 1
			}
			(*(*func(*libc.TLS, uintptr, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 848)))(tls, interp2, chan1)
		}
	}

	return 0
}

var interp2 uintptr = uintptr(0) /* tclTest.c:4528:23 */

//----------------------------------------------------------------------
//
// TestpanicCmd --
//
//	Calls the panic routine.
//
// Results:
//	Always returns TCL_OK.
//
// Side effects:
//	May exit application.
//
//----------------------------------------------------------------------

func TestpanicCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4594:1: */
	bp := tls.Alloc(16)
	defer tls.Free(16)

	var argString uintptr

	//  Put the arguments into a var args structure
	//  Append all of the arguments together separated by spaces

	argString = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 776)))(tls, argc-1, argv+uintptr(1)*4)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+5099, libc.VaList(bp, argString))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, argString)

	return 0
}

func TestfileCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4615:1: */
	bp := tls.Alloc(60)
	defer tls.Free(60)

	var force int32
	var i int32
	var j int32
	var result int32
	// var error uintptr at bp+56, 4

	var subcmd uintptr
	var _objPtr uintptr
	*(*uintptr)(unsafe.Pointer(bp + 56 /* error */)) = uintptr(0)

	if !(argc < 3) {
		goto __1
	}
	return 1
__1:
	;

	force = 0
	i = 2
	if !(libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4))), ts+5102) == 0) {
		goto __2
	}
	force = 1
	i = 3
__2:
	;

	if !(argc-i > 2) {
		goto __3
	}
	return 1
__3:
	;

	j = i
__4:
	if !(j < argc) {
		goto __6
	}
	if !((*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1860)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(j)*4))) == uintptr(0)) {
		goto __7
	}
	return 1
__7:
	;
	goto __5
__5:
	j++
	goto __4
	goto __6
__6:
	;

	subcmd = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)))

	if !(libc.Xstrcmp(tls, subcmd, ts+5109) == 0) {
		goto __8
	}
	result = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 828)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*4)))
	goto __9
__8:
	if !(libc.Xstrcmp(tls, subcmd, ts+5112) == 0) {
		goto __10
	}
	result = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 824)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*4)))
	goto __11
__10:
	if !(libc.Xstrcmp(tls, subcmd, ts+5115) == 0) {
		goto __12
	}
	result = (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 820)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
	goto __13
__12:
	if !(libc.Xstrcmp(tls, subcmd, ts+5118) == 0) {
		goto __14
	}
	result = (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 816)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
	goto __15
__14:
	if !(libc.Xstrcmp(tls, subcmd, ts+5124) == 0) {
		goto __16
	}
	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 812)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i+1)*4)), bp+56)
	goto __17
__16:
	if !(libc.Xstrcmp(tls, subcmd, ts+5130) == 0) {
		goto __18
	}
	result = (*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 808)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), force, bp+56)
	goto __19
__18:
	result = 1
	goto end
__19:
	;
__17:
	;
__15:
	;
__13:
	;
__11:
	;
__9:
	;

	if !(result != 0) {
		goto __20
	}
	if !(*(*uintptr)(unsafe.Pointer(bp + 56)) != uintptr(0)) {
		goto __21
	}
	if !(int32(*(*int8)(unsafe.Pointer((*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) + uintptr(0)))) != 0) {
		goto __22
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), ts+1550, uintptr(0)))
__22:
	;
__23:
	_objPtr = *(*uintptr)(unsafe.Pointer(bp + 56 /* error */))
	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1) {
		goto __26
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
__26:
	;
	goto __24
__24:
	if 0 != 0 {
		goto __23
	}
	goto __25
__25:
	;
__21:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+32, (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 516)))(tls), uintptr(0)))
__20:
	;

end:
	return result
}

//----------------------------------------------------------------------
//
// TestgetvarfullnameCmd --
//
//	Implements the "testgetvarfullname" cmd that is used when testing
//	the Tcl_GetVariableFullName procedure.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestgetvarfullnameCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:4697:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var name uintptr
	var arg uintptr
	var flags int32 = 0
	var namespacePtr uintptr
	// var framePtr uintptr at bp, 4

	var variable Tcl_Var

	if objc != 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+5136)
		return 1
	}

	name = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))

	arg = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if libc.Xstrcmp(tls, arg, ts+3367 /* "global" */) == 0 {
		flags = 1
	} else if libc.Xstrcmp(tls, arg, ts+4978 /* "namespace" */) == 0 {
		flags = 2
	}

	// This command, like any other created with Tcl_Create[Obj]Command, runs
	// in the global namespace. As a "namespace-aware" command that needs to
	// run in a particular namespace, it must activate that namespace itself.

	if flags == 2 {
		namespacePtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclIntStubsPtr + 476)))(tls, interp, ts+5147, uintptr(0),
			0x200)
		if namespacePtr == uintptr(0) {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 876)))(tls, interp, bp, namespacePtr,
			/*isProcCallFrame*/ 0)
	}

	variable = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Var)(unsafe.Pointer(tclIntStubsPtr + 488)))(tls, interp, name, uintptr(0),
		flags|0x200)

	if flags == 2 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclIntStubsPtr + 880)))(tls, interp)
	}
	if variable == uintptr(0) {
		return 1
	}
	(*(*func(*libc.TLS, uintptr, Tcl_Var, uintptr))(unsafe.Pointer(tclIntStubsPtr + 512)))(tls, interp, variable, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp))
	return 0
}

//----------------------------------------------------------------------
//
// GetTimesObjCmd --
//
//	This procedure implements the "gettimes" command.  It is used for
//	computing the time needed for various basic operations such as reading
//	variables, allocating memory, sprintf, converting variables, etc.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Allocates and frees memory, sets a variable "a" in the interpreter.
//
//----------------------------------------------------------------------

func GetTimesObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, notused1 int32, notused2 uintptr) int32 { /* tclTest.c:4771:1: */
	bp := tls.Alloc(252)
	defer tls.Free(252)

	var iPtr uintptr = interp
	var i int32
	// var n int32 at bp+224, 4

	var timePer float64
	// var start Tcl_Time at bp+208, 8

	// var stop Tcl_Time at bp+216, 8

	var objPtr uintptr
	var objv uintptr
	var s uintptr
	// var newString [24]int8 at bp+228, 24

	// alloc & free 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5161 /* "alloc & free 100..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		objPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(Tcl_Obj{})))
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, objPtr)
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5195 /* "   %.3f usec per..." */, libc.VaList(bp, timePer/float64(100000)))

	// alloc 5000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5224 /* "alloc 5000 6 wor..." */, 0)
	objv = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(5000)*uint32(unsafe.Sizeof(uintptr(0))))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 5000; i++ {
		*(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)) = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(Tcl_Obj{})))
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5249 /* "   %.3f usec per..." */, libc.VaList(bp+16, timePer/float64(5000)))

	// free 5000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5273 /* "free 5000 6 word..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 5000; i++ {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5297 /* "   %.3f usec per..." */, libc.VaList(bp+32, timePer/float64(5000)))

	// Tcl_NewObj 5000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5320 /* "Tcl_NewObj 5000 ..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 5000; i++ {
		*(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)) = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5343 /* "   %.3f usec per..." */, libc.VaList(bp+48, timePer/float64(5000)))

	// Tcl_DecrRefCount 5000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5372 /* "Tcl_DecrRefCount..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 5000; i++ {
		objPtr = *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4))
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = objPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5401 /* "   %.3f usec per..." */, libc.VaList(bp+64, timePer/float64(5000)))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, objv)

	// TclGetString 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5436 /* "TclGetStringFrom..." */, 0)
	objPtr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+5481, -1)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		if !((*Tcl_Obj)(unsafe.Pointer(objPtr)).bytes != 0) {
			(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, objPtr)
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5487, /* "   %.3f usec per..." */
		libc.VaList(bp+80, timePer/float64(100000)))

	// Tcl_GetIntFromObj 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5536 /* "Tcl_GetIntFromOb..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, objPtr, bp+224) != 0 {
			return 1
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5579, /* "   %.3f usec per..." */
		libc.VaList(bp+96, timePer/float64(100000)))
	for ok1 := true; ok1; ok1 = 0 != 0 {
		var _objPtr uintptr = objPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	// Tcl_GetInt 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5626 /* "Tcl_GetInt of \"1..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, ts+5481, bp+224) != 0 {
			return 1
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5662, /* "   %.3f usec per..." */
		libc.VaList(bp+112, timePer/float64(100000)))

	// sprintf 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5702 /* "sprintf of 12345..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		libc.Xsprintf(tls, bp+228 /* &newString[0] */, ts+5733 /* "%d" */, libc.VaList(bp+128, 12345))
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5736, /* "   %.3f usec per..." */
		libc.VaList(bp+144, timePer/float64(100000)))

	// hashtable lookup 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5771 /* "hashtable lookup..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).globalNsPtr + 96 + 44)))(tls, (*Interp)(unsafe.Pointer(iPtr)).globalNsPtr+96, ts+247)
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5816, /* "   %.3f usec per..." */
		libc.VaList(bp+160, timePer/float64(100000)))

	// Tcl_SetVar 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5865 /* "Tcl_SetVar of \"1..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		s = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, ts+5901, uintptr(0), ts+5481, 0x200)
		if s == uintptr(0) {
			return 1
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5903, /* "   %.3f usec per..." */
		libc.VaList(bp+176, timePer/float64(100000)))

	// Tcl_GetVar 100000 times
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5948 /* "Tcl_GetVar of a=..." */, 0)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+208)
	for i = 0; i < 100000; i++ {
		s = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 712)))(tls, interp, ts+5901, uintptr(0), 0x200)
		if s == uintptr(0) {
			return 1
		}
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+216)
	timePer = float64(((*Tcl_Time)(unsafe.Pointer(bp+216)).sec-(*Tcl_Time)(unsafe.Pointer(bp+208)).sec)*1000000 + ((*Tcl_Time)(unsafe.Pointer(bp+216)).usec - (*Tcl_Time)(unsafe.Pointer(bp+208)).usec))
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(2)), ts+5987, /* "   %.3f usec per..." */
		libc.VaList(bp+192, timePer/float64(100000)))

	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
	return 0
}

//----------------------------------------------------------------------
//
// NoopCmd --
//
//	This procedure is just used to time the overhead involved in
//	parsing and invoking a command.
//
// Results:
//	None.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func NoopCmd(tls *libc.TLS, unused ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:4950:1: */
	return 0
}

//----------------------------------------------------------------------
//
// NoopObjCmd --
//
//	This object-based procedure is just used to time the overhead
//	involved in parsing and invoking a command.
//
// Results:
//	Returns the TCL_OK result code.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func NoopObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:4977:1: */
	return 0
}

//----------------------------------------------------------------------
//
// TestpurebytesobjObjCmd --
//
//	This object-based procedure constructs a pure bytes object
//	without type and with internal representation containing NULL's.
//
//	If no argument supplied it returns empty object with tclEmptyStringRep,
//	otherwise it returns this as pure bytes object with bytes value equal
//	string.
//
// Results:
//	Returns the TCL_OK result code.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestpurebytesobjObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:5008:1: */
	var objPtr uintptr

	if objc > 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+6030)
		return 1
	}
	objPtr = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
	//
	//     objPtr->internalRep.twoPtrValue.ptr1 = NULL;
	//     objPtr->internalRep.twoPtrValue.ptr2 = NULL;
	//
	libc.Xmemset(tls, objPtr+16, 0, uint32(unsafe.Sizeof(struct {
		_         [0]uint64
		longValue int32
		_         [4]byte
	}{})))
	if objc == 2 {
		var s uintptr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
		(*Tcl_Obj)(unsafe.Pointer(objPtr)).length = (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))).length
		(*Tcl_Obj)(unsafe.Pointer(objPtr)).bytes = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32((*Tcl_Obj)(unsafe.Pointer(objPtr)).length+1))
		libc.Xmemcpy(tls, (*Tcl_Obj)(unsafe.Pointer(objPtr)).bytes, s, uint32((*Tcl_Obj)(unsafe.Pointer(objPtr)).length))
		*(*int8)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(objPtr)).bytes + uintptr((*Tcl_Obj)(unsafe.Pointer(objPtr)).length))) = int8(0)
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, objPtr)
	return 0
}

//----------------------------------------------------------------------
//
// TestbytestringObjCmd --
//
//	This object-based procedure constructs a string which can
//	possibly contain invalid UTF-8 bytes.
//
// Results:
//	Returns the TCL_OK result code.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestbytestringObjCmd(tls *libc.TLS, unused ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:5055:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var n int32 at bp, 4

	var p uintptr

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+6039)
		return 1
	}
	p = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 140)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, p, *(*int32)(unsafe.Pointer(bp))))
	return 0
}

//----------------------------------------------------------------------
//
// TestsetCmd --
//
//	Implements the "testset{err,noerr}" cmds that are used when testing
//	Tcl_Set/GetVar C Api with/without TCL_LEAVE_ERR_MSG flag
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//     Variables may be set.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestsetCmd(tls *libc.TLS, data ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5092:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	var flags int32 = int32(data)
	var value uintptr

	if argc == 2 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6049, uintptr(0))
		value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 712)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), uintptr(0), flags)
		if value == uintptr(0) {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, value)
		return 0
	} else if argc == 3 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6060, uintptr(0))
		value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), uintptr(0), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), flags)
		if value == uintptr(0) {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, value)
		return 0
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482,
			*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+6071 /* " varName ?newVal..." */, uintptr(0)))
		return 1
	}
	return int32(0)
}

func Testset2Cmd(tls *libc.TLS, data ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5124:1: */
	bp := tls.Alloc(40)
	defer tls.Free(40)

	var flags int32 = int32(data)
	var value uintptr

	if argc == 3 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6049, uintptr(0))
		value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 712)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), flags)
		if value == uintptr(0) {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, value)
		return 0
	} else if argc == 4 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6060, uintptr(0))
		value = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 960)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), flags)
		if value == uintptr(0) {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, value)
		return 0
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482,
			*(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)), ts+6092 /* " varName elemNam..." */, uintptr(0)))
		return 1
	}
	return int32(0)
}

//----------------------------------------------------------------------
//
// TestsaveresultCmd --
//
//	Implements the "testsaveresult" cmd that is used when testing the
//	Tcl_SaveResult, Tcl_RestoreResult, and Tcl_DiscardResult interfaces.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestsaveresultCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:5175:1: */
	bp := tls.Alloc(260)
	defer tls.Free(260)

	var iPtr uintptr = interp
	// var discard int32 at bp+28, 4

	var result int32
	// var index int32 at bp+24, 4

	// var state Tcl_SavedResult at bp+32, 228

	var objPtr uintptr

	// Parse arguments

	if objc != 4 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+6122)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&optionStrings2)), int32(unsafe.Sizeof(uintptr(0))), ts+3360, 0, bp+24) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+28) != 0 {
		return 1
	}

	objPtr = uintptr(0) // Lint.
	switch uint32(*(*int32)(unsafe.Pointer(bp + 24 /* index */))) {
	case uint32(4) /* RESULT_SMALL */ :
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6142, uintptr(1))
		break
	case uint32(0) /* RESULT_APPEND */ :
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+6155, uintptr(0)))
		break
	case uint32(2) /* RESULT_FREE */ :
		{
			var buf uintptr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(200))

			libc.Xstrcpy(tls, buf, ts+6169 /* "free result" */)
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, buf, uintptr(3))
			break

		}
	case uint32(1) /* RESULT_DYNAMIC */ :
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+6181, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{TestsaveresultFree})))
		break
	case uint32(3) /* RESULT_OBJECT */ :
		objPtr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+6196, -1)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, objPtr)
		break
	}

	freeCount = 0
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1268)))(tls, interp, bp+32)

	if int32(uint32(*(*int32)(unsafe.Pointer(bp + 24)))) == 3 /* RESULT_OBJECT */ {
		result = (*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1180)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), 0)
	} else {
		result = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 524)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))))
	}

	if *(*int32)(unsafe.Pointer(bp + 28 /* discard */)) != 0 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1168)))(tls, bp+32)
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1264)))(tls, interp, bp+32)
		result = 0
	}

	switch uint32(*(*int32)(unsafe.Pointer(bp + 24 /* index */))) {
	case uint32(1) /* RESULT_DYNAMIC */ :
		{
			var present int32 = libc.Bool32((*Interp)(unsafe.Pointer(iPtr)).freeProc == *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{TestsaveresultFree})))
			var called int32 = freeCount

			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
				if called != 0 {
					return ts + 6210 /* "called" */
				}
				return ts + 6217 /* "notCalled" */
			}())
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
				if present != 0 {
					return ts + 6227 /* "present" */
				}
				return ts + 6235 /* "missing" */
			}())
			break

		}
	case uint32(3) /* RESULT_OBJECT */ :
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
			if (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp) == objPtr {
				return ts + 6243 /* "same" */
			}
			return ts + 6248 /* "different" */
		}())
		break
	default:
		break
	}
	return result
}

var optionStrings2 = [6]uintptr{
	ts + 2518 /* "append" */, ts + 6258 /* "dynamic" */, ts + 2537 /* "free" */, ts + 6266 /* "object" */, ts + 6273 /* "small" */, uintptr(0),
} /* tclTest.c:5185:23 */

//----------------------------------------------------------------------
//
// TestsaveresultFree --
//
//	Special purpose freeProc used by TestsaveresultCmd.
//
// Results:
//	None.
//
// Side effects:
//	Increments the freeCount.
//
//----------------------------------------------------------------------

func TestsaveresultFree(tls *libc.TLS, blockPtr uintptr) { /* tclTest.c:5284:1: */
	freeCount++
}

//----------------------------------------------------------------------
//
// TestmainthreadCmd  --
//
//	Implements the "testmainthread" cmd that is used to test the
//	'Tcl_GetCurrentThread' API.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestmainthreadCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5308:1: */
	if argc == 1 {
		var idObj uintptr = (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, Tcl_WideInt((*(*func(*libc.TLS) Tcl_ThreadId)(unsafe.Pointer(tclStubsPtr + 1208)))(tls)))

		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, idObj)
		return 0
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1396, uintptr(0))
		return 1
	}
	return int32(0)
}

//----------------------------------------------------------------------
//
// MainLoop --
//
//	A main loop set by TestsetmainloopCmd below.
//
// Results:
//	None.
//
// Side effects:
//	Event handlers could do anything.
//
//----------------------------------------------------------------------

func MainLoop(tls *libc.TLS) { /* tclTest.c:5342:1: */
	for !(exitMainLoop != 0) {
		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(tclStubsPtr + 468)))(tls, 0)
	}
	libc.Xfprintf(tls, libc.X__acrt_iob_func(tls, uint32(1)), ts+6279 /* "Exit MainLoop\n" */, 0)
	libc.Xfflush(tls, libc.X__acrt_iob_func(tls, uint32(1)))
}

//----------------------------------------------------------------------
//
// TestsetmainloopCmd  --
//
//	Implements the "testsetmainloop" cmd that is used to test the
//	'Tcl_SetMainLoop' API.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestsetmainloopCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5369:1: */
	exitMainLoop = 0
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1144)))(tls, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{MainLoop})))
	return 0
}

//----------------------------------------------------------------------
//
// TestexitmainloopCmd  --
//
//	Implements the "testexitmainloop" cmd that is used to test the
//	'Tcl_SetMainLoop' API.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestexitmainloopCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5398:1: */
	exitMainLoop = 1
	return 0
}

//----------------------------------------------------------------------
//
// TestChannelCmd --
//
//	Implements the Tcl "testchannel" debugging command and its
//	subcommands. This is part of the testing environment.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestChannelCmd(tls *libc.TLS, clientData ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5427:1: */
	bp := tls.Alloc(824)
	defer tls.Free(824)

	var cmdName uintptr // Sub command.
	var hTblPtr uintptr // Hash table of channels.
	// var hSearch Tcl_HashSearch at bp+812, 12
	// Search variable.
	var hPtr uintptr      // Search variable.
	var chanPtr uintptr   // The actual channel.
	var statePtr uintptr  // state info for channel
	var chan1 Tcl_Channel // The opaque type.
	var len size_t        // Length of subcommand string.
	var IOQueued int32    // How much IO is queued inside channel?
	// var buf [24]int8 at bp+788, 24
	// For sprintf.
	// var mode int32 at bp+776, 4
	// rw mode of the channel

	if argc < 2 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+6294 /* " subcommand ?add..." */, uintptr(0)))
		return 1
	}
	cmdName = *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4))
	len = libc.Xstrlen(tls, cmdName)

	chanPtr = uintptr(0)

	if argc > 2 {
		if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 's' && libc.Xstrncmp(tls, cmdName, ts+6327, len) == 0 {
			// For splice access the pool of detached channels.
			// Locate channel, remove from the list.

			var nextPtrPtr uintptr
			var curPtr uintptr

			chan1 = uintptr(0)
			nextPtrPtr = uintptr(unsafe.Pointer(&firstDetached))
			curPtr = firstDetached
		__1:
			if !(curPtr != uintptr(0)) {
				goto __3
			}
			{

				if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), (*(*func(*libc.TLS, Tcl_Channel) uintptr)(unsafe.Pointer(tclStubsPtr + 632)))(tls, (*TestChannel)(unsafe.Pointer(curPtr)).__chan)) == 0 {
					*(*uintptr)(unsafe.Pointer(nextPtrPtr)) = (*TestChannel)(unsafe.Pointer(curPtr)).nextPtr
					(*TestChannel)(unsafe.Pointer(curPtr)).nextPtr = uintptr(0)
					chan1 = (*TestChannel)(unsafe.Pointer(curPtr)).__chan
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, curPtr)
					goto __3
				}

			}
			goto __2
		__2:
			nextPtrPtr = curPtr + 4
			curPtr = (*TestChannel)(unsafe.Pointer(curPtr)).nextPtr
			goto __1
			goto __3
		__3:
		} else {
			chan1 = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) Tcl_Channel)(unsafe.Pointer(tclStubsPtr + 612)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)), bp+776)
		}
		if chan1 == uintptr(0) {
			return 1
		}
		chanPtr = chan1
		statePtr = (*Channel)(unsafe.Pointer(chanPtr)).state
		chanPtr = (*ChannelState)(unsafe.Pointer(statePtr)).topChanPtr
		chan1 = chanPtr
	} else {
		// lint
		statePtr = uintptr(0)
		chan1 = uintptr(0)
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 's' && libc.Xstrncmp(tls, cmdName, ts+6334, len) == 0 {

		*(*uintptr)(unsafe.Pointer(bp + 780 /* msg */)) = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), -1)

		(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 780 /* msg */)))).refCount++
		(*(*func(*libc.TLS, Tcl_Channel, uintptr))(unsafe.Pointer(tclStubsPtr + 2264)))(tls, chan1, *(*uintptr)(unsafe.Pointer(bp + 780)))
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(bp + 780 /* msg */))
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}

		(*(*func(*libc.TLS, Tcl_Channel, uintptr))(unsafe.Pointer(tclStubsPtr + 2268)))(tls, chan1, bp+780)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 780)))
		for ok1 := true; ok1; ok1 = 0 != 0 {
			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(bp + 780 /* msg */))
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		return 0
	}
	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 's' && libc.Xstrncmp(tls, cmdName, ts+6350, len) == 0 {

		*(*uintptr)(unsafe.Pointer(bp + 784 /* msg */)) = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), -1)

		(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 784 /* msg */)))).refCount++
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 2256)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 784)))
		for ok2 := true; ok2; ok2 = 0 != 0 {
			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(bp + 784 /* msg */))
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}

		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 2260)))(tls, interp, bp+784)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 784)))
		for ok3 := true; ok3; ok3 = 0 != 0 {
			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(bp + 784 /* msg */))
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		return 0
	}

	// "cut" is actually more a simplified detach facility as provided by the
	// Thread package. Without the safeguards of a regular command (no
	// checking that the command is truly cut'able, no mutexes for
	// thread-safety). Its complementary command is "splice", see below.

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'c' && libc.Xstrncmp(tls, cmdName, ts+6372, len) == 0 {
		var det uintptr

		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6376 /* " cut channelName..." */, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 848)))(tls, uintptr(0), chan1) // prevent closing
		(*(*func(*libc.TLS, uintptr, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1016)))(tls, interp, chan1)

		(*(*func(*libc.TLS, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 1668)))(tls, chan1)

		// Remember the channel in the pool of detached channels

		det = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(TestChannel{})))
		(*TestChannel)(unsafe.Pointer(det)).__chan = chan1
		(*TestChannel)(unsafe.Pointer(det)).nextPtr = firstDetached
		firstDetached = det

		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'c' && libc.Xstrncmp(tls, cmdName, ts+6394, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+80, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6415 /* " clearchannelhan..." */, uintptr(0)))
			return 1
		}
		(*(*func(*libc.TLS, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 1676)))(tls, chan1)
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'i' && libc.Xstrncmp(tls, cmdName, ts+6450, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+120, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6455 /* " info channelNam..." */, uintptr(0)))
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1600)))(tls, (*Channel)(unsafe.Pointer(chanPtr)).typePtr))
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<1) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6474)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<2) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6479)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<3) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6485)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6497)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<4) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6506)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<5) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6511)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6516)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<7) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6521)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<9) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6533)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<11) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6537)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6545)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).inputTranslation == TCL_TRANSLATE_AUTO {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6555)
			if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<12) != 0 {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6560)
			} else {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
			}
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).inputTranslation == TCL_TRANSLATE_LF {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6567)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).inputTranslation == TCL_TRANSLATE_CR {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6570)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).inputTranslation == TCL_TRANSLATE_CRLF {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6573)
			if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<12) != 0 {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6578)
			} else {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
			}
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).outputTranslation == TCL_TRANSLATE_AUTO {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6555)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).outputTranslation == TCL_TRANSLATE_LF {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6567)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).outputTranslation == TCL_TRANSLATE_CR {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6570)
		} else if (*ChannelState)(unsafe.Pointer(statePtr)).outputTranslation == TCL_TRANSLATE_CRLF {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6573)
		}
		IOQueued = (*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 740)))(tls, chan1)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32(IOQueued))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+788)

		IOQueued = (*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1924)))(tls, chan1)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32(IOQueued))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+788)

		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32(int32((*(*func(*libc.TLS, Tcl_Channel) Tcl_WideInt)(unsafe.Pointer(tclStubsPtr + 1976)))(tls, chan1))))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+788)

		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32((*ChannelState)(unsafe.Pointer(statePtr)).refCount))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, bp+788)

		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'i' && libc.Xstrncmp(tls, cmdName, ts+6588, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+160, ts+6602, uintptr(0)))
			return 1
		}
		IOQueued = (*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 740)))(tls, chan1)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32(IOQueued))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+184, bp+788, uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'i' && libc.Xstrncmp(tls, cmdName, ts+6624, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+208, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32((*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1660)))(tls, chan1)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+232, bp+788, uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'i' && libc.Xstrncmp(tls, cmdName, ts+6633, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+256, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32((*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1764)))(tls, chan1)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+280, bp+788, uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'm' && libc.Xstrncmp(tls, cmdName, ts+6644, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+304, ts+6602, uintptr(0)))
			return 1
		}

		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<1) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6474)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<2) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+6479)
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, ts+1481)
		}
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'm' && libc.Xstrncmp(tls, cmdName, ts+6649, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+328, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls,
			Tcl_WideInt((*(*func(*libc.TLS, Tcl_Channel) Tcl_ThreadId)(unsafe.Pointer(tclStubsPtr + 1740)))(tls, chan1))))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'n' && libc.Xstrncmp(tls, cmdName, ts+1778, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+352, ts+6602, uintptr(0)))
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+376, (*ChannelState)(unsafe.Pointer(statePtr)).channelName, uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'o' && libc.Xstrncmp(tls, cmdName, ts+6657, len) == 0 {
		hTblPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, ts+6662, uintptr(0))
		if hTblPtr == uintptr(0) {
			return 0
		}
		for hPtr = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 588)))(tls, hTblPtr, bp+812); hPtr != uintptr(0); hPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 780)))(tls, bp+812) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
				if (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == -1 {
					return *(*uintptr)(unsafe.Pointer(hPtr + 16 /* &.key */))
				}
				return hPtr + 16 /* &.key */
			}())
		}
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'o' && libc.Xstrncmp(tls, cmdName, ts+6668, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+400, ts+6602, uintptr(0)))
			return 1
		}

		IOQueued = (*(*func(*libc.TLS, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1924)))(tls, chan1)
		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32(IOQueued))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+424, bp+788, uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'q' && libc.Xstrncmp(tls, cmdName, ts+6683, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+448, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+472, func() uintptr {
				if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<12) != 0 {
					return ts + 6692 /* "1" */
				}
				return ts + 6694 /* "0" */
			}(), uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'r' && libc.Xstrncmp(tls, cmdName, ts+6696, len) == 0 {
		hTblPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, ts+6662, uintptr(0))
		if hTblPtr == uintptr(0) {
			return 0
		}
		for hPtr = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 588)))(tls, hTblPtr, bp+812); hPtr != uintptr(0); hPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 780)))(tls, bp+812) {
			chanPtr = (*Tcl_HashEntry)(unsafe.Pointer(hPtr)).clientData
			statePtr = (*Channel)(unsafe.Pointer(chanPtr)).state
			if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<1) != 0 {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
					if (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == -1 {
						return *(*uintptr)(unsafe.Pointer(hPtr + 16 /* &.key */))
					}
					return hPtr + 16 /* &.key */
				}())
			}
		}
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'r' && libc.Xstrncmp(tls, cmdName, ts+6705, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+496, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclIntStubsPtr + 104)))(tls, bp+788, int32((*ChannelState)(unsafe.Pointer(statePtr)).refCount))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+520, bp+788, uintptr(0)))
		return 0
	}

	// "splice" is actually more a simplified attach facility as provided by
	// the Thread package. Without the safeguards of a regular command (no
	// checking that the command is truly cut'able, no mutexes for
	// thread-safety). Its complementary command is "cut", see above.

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 's' && libc.Xstrncmp(tls, cmdName, ts+6327, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+544, ts+6602, uintptr(0)))
			return 1
		}

		(*(*func(*libc.TLS, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 1672)))(tls, chan1)

		(*(*func(*libc.TLS, uintptr, Tcl_Channel))(unsafe.Pointer(tclStubsPtr + 848)))(tls, interp, chan1)
		(*(*func(*libc.TLS, uintptr, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1016)))(tls, uintptr(0), chan1)

		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 't' && libc.Xstrncmp(tls, cmdName, ts+6714, len) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+568, ts+6602, uintptr(0)))
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+592, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1600)))(tls, (*Channel)(unsafe.Pointer(chanPtr)).typePtr), uintptr(0)))
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'w' && libc.Xstrncmp(tls, cmdName, ts+6719, len) == 0 {
		hTblPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, ts+6662, uintptr(0))
		if hTblPtr == uintptr(0) {
			return 0
		}
		for hPtr = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 588)))(tls, hTblPtr, bp+812); hPtr != uintptr(0); hPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 780)))(tls, bp+812) {
			chanPtr = (*Tcl_HashEntry)(unsafe.Pointer(hPtr)).clientData
			statePtr = (*Channel)(unsafe.Pointer(chanPtr)).state
			if (*ChannelState)(unsafe.Pointer(statePtr)).flags&(int32(1)<<2) != 0 {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 284)))(tls, interp, func() uintptr {
					if (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(hTblPtr)).keyType == -1 {
						return *(*uintptr)(unsafe.Pointer(hPtr + 16 /* &.key */))
					}
					return hPtr + 16 /* &.key */
				}())
			}
		}
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 't' && libc.Xstrncmp(tls, cmdName, ts+6728, len) == 0 {
		// Syntax: transform channel -command command

		if argc != 5 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+616, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6738 /* " transform chann..." */, uintptr(0)))
			return 1
		}
		if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), ts+6773 /* "-command" */) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+656, ts+6782, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+6797 /* "\": should be \"-c..." */, uintptr(0)))
			return 1
		}

		return (*(*func(*libc.TLS, uintptr, Tcl_Channel, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 652)))(tls, interp, chan1,
			(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), -1))
	}

	if int32(*(*int8)(unsafe.Pointer(cmdName + uintptr(0)))) == 'u' && libc.Xstrncmp(tls, cmdName, ts+6821, len) == 0 {
		// Syntax: unstack channel

		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+696, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6829 /* " unstack channel..." */, uintptr(0)))
			return 1
		}
		return (*(*func(*libc.TLS, uintptr, Tcl_Channel) int32)(unsafe.Pointer(tclStubsPtr + 1136)))(tls, interp, chan1)
	}

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+736, ts+1428, cmdName,

		ts+6847 /* "\": should be cut..." */, uintptr(0)))
	return 1
}

//----------------------------------------------------------------------
//
// TestChannelEventCmd --
//
//	This procedure implements the "testchannelevent" command. It is used
//	to test the Tcl channel event mechanism.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Creates, deletes and returns channel event handlers.
//
//----------------------------------------------------------------------

// ARGSUSED
func TestChannelEventCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:5896:1: */
	bp := tls.Alloc(524)
	defer tls.Free(524)

	var resultListPtr uintptr
	var chanPtr uintptr
	var statePtr uintptr // state info for channel
	var esPtr uintptr
	var prevEsPtr uintptr
	var nextEsPtr uintptr
	var cmd uintptr
	// var index int32 at bp+520, 4

	var i int32
	var mask int32
	var len int32

	if argc < 3 || argc > 5 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
			ts+6962 /* " channelName cmd..." */, uintptr(0)))
		return 1
	}
	chanPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) Tcl_Channel)(unsafe.Pointer(tclStubsPtr + 612)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(1)*4)), uintptr(0))
	if chanPtr == uintptr(0) {
		return 1
	}
	statePtr = (*Channel)(unsafe.Pointer(chanPtr)).state

	cmd = *(*uintptr)(unsafe.Pointer(argv + uintptr(2)*4))
	len = int32(libc.Xstrlen(tls, cmd))
	if int32(*(*int8)(unsafe.Pointer(cmd + uintptr(0)))) == 'a' && libc.Xstrncmp(tls, cmd, ts+6994, uint32(len)) == 0 {
		if argc != 5 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+6998 /* " channelName add..." */, uintptr(0)))
			return 1
		}
		if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), ts+6696 /* "readable" */) == 0 {
			mask = int32(1) << 1
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), ts+6719 /* "writable" */) == 0 {
			mask = int32(1) << 2
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), ts+6511 /* "none" */) == 0 {
			mask = 0
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+80, ts+7033, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+7050 /* "\": must be reada..." */, uintptr(0)))
			return 1
		}

		esPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(EventScriptRecord{})))
		(*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr
		(*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr = esPtr

		(*EventScriptRecord)(unsafe.Pointer(esPtr)).chanPtr = chanPtr
		(*EventScriptRecord)(unsafe.Pointer(esPtr)).interp = interp
		(*EventScriptRecord)(unsafe.Pointer(esPtr)).mask = mask
		(*EventScriptRecord)(unsafe.Pointer(esPtr)).scriptPtr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), -1)
		(*Tcl_Obj)(unsafe.Pointer((*EventScriptRecord)(unsafe.Pointer(esPtr)).scriptPtr)).refCount++

		(*(*func(*libc.TLS, Tcl_Channel, int32, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 364)))(tls, chanPtr, mask,
			(*TclIntStubs)(unsafe.Pointer(tclIntStubsPtr)).tclChannelEventScriptInvoker, esPtr)

		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmd + uintptr(0)))) == 'd' && libc.Xstrncmp(tls, cmd, ts+1416, uint32(len)) == 0 {
		if argc != 4 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+120, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+7089 /* " channelName del..." */, uintptr(0)))
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), bp+520) == 1 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 520 /* index */)) < 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+160, ts+7116, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+7134 /* ": must be nonneg..." */, uintptr(0)))
			return 1
		}
		i = 0
		esPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr
	__1:
		if !(i < *(*int32)(unsafe.Pointer(bp + 520)) && esPtr != uintptr(0)) {
			goto __3
		}
		{
			// Empty loop body.

		}
		goto __2
	__2:
		i++
		esPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr
		goto __1
		goto __3
	__3:
		;
		if esPtr == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+200, ts+7156, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+7173 /* ": out of range" */, uintptr(0)))
			return 1
		}
		if esPtr == (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr {
			(*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr
		} else {
			for prevEsPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr; prevEsPtr != uintptr(0) && (*EventScriptRecord)(unsafe.Pointer(prevEsPtr)).nextPtr != esPtr; prevEsPtr = (*EventScriptRecord)(unsafe.Pointer(prevEsPtr)).nextPtr {
				// Empty loop body.
			}
			if prevEsPtr == uintptr(0) {
				(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+7188, 0)
			}
			(*EventScriptRecord)(unsafe.Pointer(prevEsPtr)).nextPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr
		}
		(*(*func(*libc.TLS, Tcl_Channel, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 412)))(tls, chanPtr,
			(*TclIntStubs)(unsafe.Pointer(tclIntStubsPtr)).tclChannelEventScriptInvoker, esPtr)
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).scriptPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, esPtr)

		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmd + uintptr(0)))) == 'l' && libc.Xstrncmp(tls, cmd, ts+7235, uint32(len)) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+240, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+7240 /* " channelName lis..." */, uintptr(0)))
			return 1
		}
		resultListPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp)
		for esPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr; esPtr != uintptr(0); esPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr {
			if (*EventScriptRecord)(unsafe.Pointer(esPtr)).mask != 0 {
				(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, resultListPtr, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls,
					func() uintptr {
						if (*EventScriptRecord)(unsafe.Pointer(esPtr)).mask == int32(1)<<1 {
							return ts + 6696 /* "readable" */
						}
						return ts + 6719 /* "writable" */
					}(), -1))
			} else {
				(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, resultListPtr,
					(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+6511, -1))
			}
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, resultListPtr, (*EventScriptRecord)(unsafe.Pointer(esPtr)).scriptPtr)
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, resultListPtr)
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmd + uintptr(0)))) == 'r' && libc.Xstrncmp(tls, cmd, ts+7259, uint32(len)) == 0 {
		if argc != 3 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+280, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+7269 /* " channelName rem..." */, uintptr(0)))
			return 1
		}
		for esPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr; esPtr != uintptr(0); esPtr = nextEsPtr {
			nextEsPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr
			(*(*func(*libc.TLS, Tcl_Channel, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 412)))(tls, chanPtr,
				(*TclIntStubs)(unsafe.Pointer(tclIntStubsPtr)).tclChannelEventScriptInvoker, esPtr)
			for ok1 := true; ok1; ok1 = 0 != 0 {
				var _objPtr uintptr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).scriptPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, esPtr)
		}
		(*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr = uintptr(0)
		return 0
	}

	if int32(*(*int8)(unsafe.Pointer(cmd + uintptr(0)))) == 's' && libc.Xstrncmp(tls, cmd, ts+4165, uint32(len)) == 0 {
		if argc != 5 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+320, ts+1482, *(*uintptr)(unsafe.Pointer(argv + uintptr(0)*4)),
				ts+7293 /* " channelName del..." */, uintptr(0)))
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)), bp+520) == 1 {
			return 1
		}
		if *(*int32)(unsafe.Pointer(bp + 520 /* index */)) < 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+360, ts+7116, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+7134 /* ": must be nonneg..." */, uintptr(0)))
			return 1
		}
		i = 0
		esPtr = (*ChannelState)(unsafe.Pointer(statePtr)).scriptRecordPtr
	__4:
		if !(i < *(*int32)(unsafe.Pointer(bp + 520)) && esPtr != uintptr(0)) {
			goto __6
		}
		{
			// Empty loop body.

		}
		goto __5
	__5:
		i++
		esPtr = (*EventScriptRecord)(unsafe.Pointer(esPtr)).nextPtr
		goto __4
		goto __6
	__6:
		;
		if esPtr == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+400, ts+7156, *(*uintptr)(unsafe.Pointer(argv + uintptr(3)*4)),
				ts+7173 /* ": out of range" */, uintptr(0)))
			return 1
		}

		if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), ts+6696 /* "readable" */) == 0 {
			mask = int32(1) << 1
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), ts+6719 /* "writable" */) == 0 {
			mask = int32(1) << 2
		} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)), ts+6511 /* "none" */) == 0 {
			mask = 0
		} else {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+440, ts+7033, *(*uintptr)(unsafe.Pointer(argv + uintptr(4)*4)),
				ts+7050 /* "\": must be reada..." */, uintptr(0)))
			return 1
		}
		(*EventScriptRecord)(unsafe.Pointer(esPtr)).mask = mask
		(*(*func(*libc.TLS, Tcl_Channel, int32, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 364)))(tls, chanPtr, mask,
			(*TclIntStubs)(unsafe.Pointer(tclIntStubsPtr)).tclChannelEventScriptInvoker, esPtr)
		return 0
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+480, ts+7326, cmd,
		ts+7339 /* ", must be one of..." */, uintptr(0)))
	return 1
}

//----------------------------------------------------------------------
//
// TestWrongNumArgsObjCmd --
//
//	Test the Tcl_WrongNumArgs function.
//
// Results:
//	Standard Tcl result.
//
// Side effects:
//	Sets interpreter result.
//
//----------------------------------------------------------------------

func TestWrongNumArgsObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6107:1: */
	bp := tls.Alloc(8)
	defer tls.Free(8)

	// var i int32 at bp, 4

	// var length int32 at bp+4, 4

	var msg uintptr

	if objc < 3 {
		// Don't use Tcl_WrongNumArgs here, as that is the function
		// we want to test!
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+7393, uintptr(0))
		return 1
	}

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}

	msg = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+4)
	if *(*int32)(unsafe.Pointer(bp + 4 /* length */)) == 0 {
		msg = uintptr(0)
	}

	if *(*int32)(unsafe.Pointer(bp /* i */)) > objc-3 {
		// Asked for more arguments than were given.
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+7393, uintptr(0))
		return 1
	}

	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, *(*int32)(unsafe.Pointer(bp)), objv+uintptr(3)*4, msg)
	return 0
}

//----------------------------------------------------------------------
//
// TestGetIndexFromObjStructObjCmd --
//
//	Test the Tcl_GetIndexFromObjStruct function.
//
// Results:
//	Standard Tcl result.
//
// Side effects:
//	Sets interpreter result.
//
//----------------------------------------------------------------------

func TestGetIndexFromObjStructObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6163:1: */
	bp := tls.Alloc(208)
	defer tls.Free(208)

	*(*[8]uintptr)(unsafe.Pointer(bp + 104 /* ary */)) = [8]uintptr{
		ts + 5901 /* "a" */, ts + 7416 /* "b" */, ts + 7418 /* "c" */, ts + 7420 /* "d" */, ts + 2514 /* "e" */, ts + 2516 /* "f" */, uintptr(0), uintptr(0),
	}
	// var idx int32 at bp+136, 4

	// var target int32 at bp+140, 4

	if objc != 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+7422)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+104, int32(uint32(2)*uint32(unsafe.Sizeof(uintptr(0)))),
		ts+7443 /* "dummy" */, 0, bp+136 /* &idx */) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+140) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp + 136 /* idx */)) != *(*int32)(unsafe.Pointer(bp + 140 /* target */)) {
		// var buffer [64]int8 at bp+144, 64

		libc.Xsprintf(tls, bp+144 /* &buffer[0] */, ts+5733 /* "%d" */, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 136 /* idx */))))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+16, ts+7449,
			bp+144 /* &buffer[0] */, uintptr(0)))
		libc.Xsprintf(tls, bp+144 /* &buffer[0] */, ts+5733 /* "%d" */, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 140 /* target */))))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+64, ts+7485, bp+144, ts+7492, uintptr(0)))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 3, objv, uintptr(0))
	return 0
}

//----------------------------------------------------------------------
//
// TestFilesystemObjCmd --
//
//	This procedure implements the "testfilesystem" command. It is used to
//	test Tcl_FSRegister, Tcl_FSUnregister, and can be used to test that
//	the pluggable filesystem works.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Inserts or removes a filesystem from Tcl's stack.
//
//----------------------------------------------------------------------

func TestFilesystemObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6217:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var res int32
	// var boolVal int32 at bp, 4

	var msg uintptr

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+7502)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp /* boolVal */)) != 0 {
		res = (*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1900)))(tls, interp, uintptr(unsafe.Pointer(&testReportingFilesystem)))
		if res == 0 {
			msg = ts + 7510 /* "registered" */
		} else {
			msg = ts + 7521 /* "failed" */
		}
	} else {
		res = (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1904)))(tls, uintptr(unsafe.Pointer(&testReportingFilesystem)))
		if res == 0 {
			msg = ts + 7528 /* "unregistered" */
		} else {
			msg = ts + 7521 /* "failed" */
		}
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, msg, -1))
	return res
}

func TestReportInFilesystem(tls *libc.TLS, pathPtr uintptr, clientDataPtr uintptr) int32 { /* tclTest.c:6245:1: */
	var newPathPtr uintptr

	if pathPtr == lastPathPtr {
		// Reject all files second time around
		return -1
	}

	// Try to claim all files first time around

	newPathPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, pathPtr)
	lastPathPtr = newPathPtr
	(*Tcl_Obj)(unsafe.Pointer(newPathPtr)).refCount++
	if (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1916)))(tls, newPathPtr) == uintptr(0) {
		// Nothing claimed it. Therefore we don't either
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = newPathPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		lastPathPtr = uintptr(0)
		return -1
	}
	lastPathPtr = uintptr(0)
	*(*ClientData)(unsafe.Pointer(clientDataPtr)) = newPathPtr
	return 0
}

var lastPathPtr uintptr = uintptr(0) /* tclTest.c:6249:20 */

// Simple helper function to extract the native vfs representation of a path
// object, or NULL if no such representation exists.

func TestReportGetNativePath(tls *libc.TLS, pathPtr uintptr) uintptr { /* tclTest.c:6278:16: */
	return (*(*func(*libc.TLS, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 1868)))(tls, pathPtr, uintptr(unsafe.Pointer(&testReportingFilesystem)))
}

func TestReportFreeInternalRep(tls *libc.TLS, clientData ClientData) { /* tclTest.c:6286:1: */
	var nativeRep uintptr = clientData

	if nativeRep != uintptr(0) {
		// Free the path
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = nativeRep
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
}

func TestReportDupInternalRep(tls *libc.TLS, clientData ClientData) ClientData { /* tclTest.c:6298:1: */
	var original uintptr = clientData

	(*Tcl_Obj)(unsafe.Pointer(original)).refCount++
	return clientData
}

func TestReport(tls *libc.TLS, cmd uintptr, path uintptr, arg2 uintptr) { /* tclTest.c:6308:1: */
	bp := tls.Alloc(212)
	defer tls.Free(212)

	var interp uintptr = (*(*func(*libc.TLS, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 1908)))(tls, uintptr(unsafe.Pointer(&testReportingFilesystem)))

	if interp == uintptr(0) {
		// This is bad, but not much we can do about it
	} else {
		// No idea why I decided to program this up using the old string-based
		// API, but there you go. We should convert it to objects.

		var savedResult uintptr
		// var ds Tcl_DString at bp, 212

		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 496)))(tls, bp)
		(*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 476)))(tls, bp, ts+7541, -1)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 508)))(tls, bp)
		(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, bp, cmd)
		if path != uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, bp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, path))
		}
		if arg2 != uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 480)))(tls, bp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, arg2))
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 484)))(tls, bp)
		savedResult = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp)
		(*Tcl_Obj)(unsafe.Pointer(savedResult)).refCount++
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
		(*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 524)))(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).string)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp)
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, savedResult)
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = savedResult
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
}

func TestReportStat(tls *libc.TLS, path uintptr, buf uintptr) int32 { /* tclTest.c:6349:1: */
	TestReport(tls, ts+7567 /* "stat" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1824)))(tls, TestReportGetNativePath(tls, path), buf)
}

func TestReportLstat(tls *libc.TLS, path uintptr, buf uintptr) int32 { /* tclTest.c:6358:1: */
	TestReport(tls, ts+7572 /* "lstat" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1804)))(tls, TestReportGetNativePath(tls, path), buf)
}

func TestReportAccess(tls *libc.TLS, path uintptr, mode int32) int32 { /* tclTest.c:6367:1: */
	TestReport(tls, ts+7578 /* "access" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1828)))(tls, TestReportGetNativePath(tls, path), mode)
}

func TestReportOpenFileChannel(tls *libc.TLS, interp uintptr, fileName uintptr, mode int32, permissions int32) Tcl_Channel { /* tclTest.c:6376:1: */
	TestReport(tls, ts+6657 /* "open" */, fileName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) Tcl_Channel)(unsafe.Pointer(tclIntStubsPtr + 840)))(tls, interp, TestReportGetNativePath(tls, fileName),
		mode, permissions)
}

func TestReportMatchInDirectory(tls *libc.TLS, interp uintptr, resultPtr uintptr, dirPtr uintptr, pattern uintptr, types uintptr) int32 { /* tclTest.c:6390:1: */
	if types != uintptr(0) && (*Tcl_GlobTypeData)(unsafe.Pointer(types)).__type&(int32(1)<<7) != 0 {
		TestReport(tls, ts+7585 /* "matchmounts" */, dirPtr, uintptr(0))
		return 0
	} else {
		TestReport(tls, ts+7597 /* "matchindirectory" */, dirPtr, uintptr(0))
		return (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1788)))(tls, interp, resultPtr,
			TestReportGetNativePath(tls, dirPtr), pattern, types)
	}
	return int32(0)
}

func TestReportChdir(tls *libc.TLS, dirName uintptr) int32 { /* tclTest.c:6409:1: */
	TestReport(tls, ts+7614 /* "chdir" */, dirName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1840)))(tls, TestReportGetNativePath(tls, dirName))
}

func TestReportLoadFile(tls *libc.TLS, interp uintptr, fileName uintptr, handlePtr uintptr, unloadProcPtr uintptr) int32 { /* tclTest.c:6417:1: */
	TestReport(tls, ts+7620 /* "loadfile" */, fileName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1784)))(tls, interp, TestReportGetNativePath(tls, fileName), uintptr(0),
		uintptr(0), uintptr(0), uintptr(0), handlePtr, unloadProcPtr)
}

func TestReportLink(tls *libc.TLS, path uintptr, to uintptr, linkType int32) uintptr { /* tclTest.c:6434:16: */
	TestReport(tls, ts+7629 /* "link" */, path, to)
	return (*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1792)))(tls, TestReportGetNativePath(tls, path), to, linkType)
}

func TestReportRenameFile(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* tclTest.c:6445:1: */
	TestReport(tls, ts+7634 /* "renamefile" */, src, dst)
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1800)))(tls, TestReportGetNativePath(tls, src),
		TestReportGetNativePath(tls, dst))
}

func TestReportCopyFile(tls *libc.TLS, src uintptr, dst uintptr) int32 { /* tclTest.c:6457:1: */
	TestReport(tls, ts+7645 /* "copyfile" */, src, dst)
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1768)))(tls, TestReportGetNativePath(tls, src),
		TestReportGetNativePath(tls, dst))
}

func TestReportDeleteFile(tls *libc.TLS, path uintptr) int32 { /* tclTest.c:6467:1: */
	TestReport(tls, ts+7654 /* "deletefile" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1780)))(tls, TestReportGetNativePath(tls, path))
}

func TestReportCreateDirectory(tls *libc.TLS, path uintptr) int32 { /* tclTest.c:6475:1: */
	TestReport(tls, ts+7665 /* "createdirectory" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1776)))(tls, TestReportGetNativePath(tls, path))
}

func TestReportCopyDirectory(tls *libc.TLS, src uintptr, dst uintptr, errorPtr uintptr) int32 { /* tclTest.c:6483:1: */
	TestReport(tls, ts+7681 /* "copydirectory" */, src, dst)
	return (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1772)))(tls, TestReportGetNativePath(tls, src),
		TestReportGetNativePath(tls, dst), errorPtr)
}

func TestReportRemoveDirectory(tls *libc.TLS, path uintptr, recursive int32, errorPtr uintptr) int32 { /* tclTest.c:6496:1: */
	TestReport(tls, ts+7695 /* "removedirectory" */, path, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1796)))(tls, TestReportGetNativePath(tls, path), recursive,
		errorPtr)
}

func TestReportFileAttrStrings(tls *libc.TLS, fileName uintptr, objPtrRef uintptr) uintptr { /* tclTest.c:6510:19: */
	TestReport(tls, ts+7711 /* "fileattributestr..." */, fileName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1820)))(tls, TestReportGetNativePath(tls, fileName), objPtrRef)
}

func TestReportFileAttrsGet(tls *libc.TLS, interp uintptr, index int32, fileName uintptr, objPtrRef uintptr) int32 { /* tclTest.c:6520:1: */
	TestReport(tls, ts+7732 /* "fileattributesge..." */, fileName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1812)))(tls, interp, index,
		TestReportGetNativePath(tls, fileName), objPtrRef)
}

func TestReportFileAttrsSet(tls *libc.TLS, interp uintptr, index int32, fileName uintptr, objPtr uintptr) int32 { /* tclTest.c:6532:1: */
	TestReport(tls, ts+7750 /* "fileattributesse..." */, fileName, objPtr)
	return (*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1816)))(tls, interp, index,
		TestReportGetNativePath(tls, fileName), objPtr)
}

func TestReportUtime(tls *libc.TLS, fileName uintptr, tval uintptr) int32 { /* tclTest.c:6544:1: */
	TestReport(tls, ts+7768 /* "utime" */, fileName, uintptr(0))
	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1808)))(tls, TestReportGetNativePath(tls, fileName), tval)
}

func TestReportNormalizePath(tls *libc.TLS, interp uintptr, pathPtr uintptr, nextCheckpoint int32) int32 { /* tclTest.c:6553:1: */
	TestReport(tls, ts+7774 /* "normalizepath" */, pathPtr, uintptr(0))
	return nextCheckpoint
}

func SimplePathInFilesystem(tls *libc.TLS, pathPtr uintptr, clientDataPtr uintptr) int32 { /* tclTest.c:6563:1: */
	var str uintptr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, pathPtr)

	if libc.Xstrncmp(tls, str, ts+7788 /* "simplefs:/" */, uint32(10)) != 0 {
		return -1
	}
	return 0
}

// This is a slightly 'hacky' filesystem which is used just to test a few
// important features of the vfs code: (1) that you can load a shared library
// from a vfs, (2) that when copying files from one fs to another, the 'mtime'
// is preserved. (3) that recursive cross-filesystem directory copies have the
// correct behaviour with/without -force.
//
// It treats any file in 'simplefs:/' as a file, which it routes to the
// current directory. The real file it uses is whatever follows the trailing
// '/' (e.g. 'foo' in 'simplefs:/foo'), and that file exists or not according
// to what is in the native pwd.
//
// Please do not consider this filesystem a model of how things are to be
// done. It is quite the opposite!  But, it does allow us to test some
// important features.

func TestSimpleFilesystemObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6593:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var res int32
	// var boolVal int32 at bp, 4

	var msg uintptr

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+7502)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp /* boolVal */)) != 0 {
		res = (*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1900)))(tls, interp, uintptr(unsafe.Pointer(&simpleFilesystem)))
		if res == 0 {
			msg = ts + 7510 /* "registered" */
		} else {
			msg = ts + 7521 /* "failed" */
		}
	} else {
		res = (*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1904)))(tls, uintptr(unsafe.Pointer(&simpleFilesystem)))
		if res == 0 {
			msg = ts + 7528 /* "unregistered" */
		} else {
			msg = ts + 7521 /* "failed" */
		}
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, msg, -1))
	return res
}

// Treats a file name 'simplefs:/foo' by using the file 'foo' in the current
// (native) directory.

func SimpleRedirect(tls *libc.TLS, pathPtr uintptr) uintptr { /* tclTest.c:6625:16: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var len int32 at bp, 4

	var str uintptr
	var origPtr uintptr

	// We assume the same name in the current directory is ok.

	str = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, pathPtr, bp)
	if *(*int32)(unsafe.Pointer(bp)) < 10 || libc.Xstrncmp(tls, str, ts+7788, uint32(10)) != 0 {
		// Probably shouldn't ever reach here
		(*Tcl_Obj)(unsafe.Pointer(pathPtr)).refCount++
		return pathPtr
	}
	origPtr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, str+uintptr(10), -1)
	(*Tcl_Obj)(unsafe.Pointer(origPtr)).refCount++
	return origPtr
}

func SimpleMatchInDirectory(tls *libc.TLS, interp uintptr, resultPtr uintptr, dirPtr uintptr, pattern uintptr, types uintptr) int32 { /* tclTest.c:6649:1: */
	bp := tls.Alloc(8)
	defer tls.Free(8)

	var res int32
	var origPtr uintptr
	var resPtr uintptr

	// We only provide a new volume, therefore no mounts at all
	if types != uintptr(0) && (*Tcl_GlobTypeData)(unsafe.Pointer(types)).__type&(int32(1)<<7) != 0 {
		return 0
	}

	// We assume the same name in the current directory is ok.
	resPtr = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
	(*Tcl_Obj)(unsafe.Pointer(resPtr)).refCount++
	origPtr = SimpleRedirect(tls, dirPtr)
	res = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1788)))(tls, interp, resPtr, origPtr, pattern, types)
	if res == 0 {
		// var gLength int32 at bp, 4

		var j int32
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), resPtr, bp)
		for j = 0; j < *(*int32)(unsafe.Pointer(bp /* gLength */)); j++ {
			// var gElt uintptr at bp+4, 4

			var nElt uintptr
			(*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 192)))(tls, uintptr(0), resPtr, j, bp+4)
			nElt = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7788, 10)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1152)))(tls, nElt, *(*uintptr)(unsafe.Pointer(bp + 4)))
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, uintptr(0), resultPtr, nElt)
		}
	}
	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = origPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	for ok1 := true; ok1; ok1 = 0 != 0 {
		var _objPtr uintptr = resPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	return res
}

func SimpleOpenFileChannel(tls *libc.TLS, interp uintptr, pathPtr uintptr, mode int32, permissions int32) Tcl_Channel { /* tclTest.c:6691:1: */
	bp := tls.Alloc(24)
	defer tls.Free(24)

	var tempPtr uintptr
	var chan1 Tcl_Channel

	if mode != 0 && !(mode&0x0000 != 0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+7799, uintptr(0)))
		return uintptr(0)
	}

	tempPtr = SimpleRedirect(tls, pathPtr)
	chan1 = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Channel)(unsafe.Pointer(tclStubsPtr + 1832)))(tls, interp, tempPtr, ts+7809, permissions)
	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = tempPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	return chan1
}

func SimpleAccess(tls *libc.TLS, pathPtr uintptr, mode int32) int32 { /* tclTest.c:6714:1: */
	var tempPtr uintptr = SimpleRedirect(tls, pathPtr)
	var res int32 = (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1828)))(tls, tempPtr, mode)

	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = tempPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	return res
}

func SimpleStat(tls *libc.TLS, pathPtr uintptr, bufPtr uintptr) int32 { /* tclTest.c:6726:1: */
	var tempPtr uintptr = SimpleRedirect(tls, pathPtr)
	var res int32 = (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1824)))(tls, tempPtr, bufPtr)

	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = tempPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	return res
}

func SimpleListVolumes(tls *libc.TLS) uintptr { /* tclTest.c:6737:16: */
	// Add one new volume
	var retVal uintptr

	retVal = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7788, -1)
	(*Tcl_Obj)(unsafe.Pointer(retVal)).refCount++
	return retVal
}

// Used to check correct string-length determining in Tcl_NumUtfChars

func TestNumUtfCharsCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6753:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	if objc > 1 {
		*(*int32)(unsafe.Pointer(bp /* len */)) = -1

		if objc > 2 {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp)
		}
		*(*int32)(unsafe.Pointer(bp /* len */)) = (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(tclStubsPtr + 1256)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), *(*int32)(unsafe.Pointer(bp)))
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp))))
	}
	return 0
}

// Used to check correct operation of Tcl_UtfFindFirst

func TestFindFirstCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6776:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	if objc > 1 {
		*(*int32)(unsafe.Pointer(bp /* len */)) = -1

		if objc > 2 {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp)
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1320)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), *(*int32)(unsafe.Pointer(bp))), -1))
	}
	return 0
}

// Used to check correct operation of Tcl_UtfFindLast

func TestFindLastCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6798:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	if objc > 1 {
		*(*int32)(unsafe.Pointer(bp /* len */)) = -1

		if objc > 2 {
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp)
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 1324)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), *(*int32)(unsafe.Pointer(bp))), -1))
	}
	return 0
}

//----------------------------------------------------------------------
//
// TestcpuidCmd --
//
//	Retrieves CPU ID information.
//
// Usage:
//	testwincpuid <eax>
//
// Parameters:
//	eax - The value to pass in the EAX register to a CPUID instruction.
//
// Results:
//	Returns a four-element list containing the values from the EAX, EBX,
//	ECX and EDX registers returned from the CPUID instruction.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestcpuidCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6840:1: */
	bp := tls.Alloc(36)
	defer tls.Free(36)

	var status int32
	// var index int32 at bp, 4

	var i int32
	// var regs [4]uint32 at bp+4, 16

	// var regsObjs [4]uintptr at bp+20, 16

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+7811)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}
	status = (*(*func(*libc.TLS, uint32, uintptr) int32)(unsafe.Pointer(tclIntPlatStubsPtr + 124)))(tls, uint32(*(*int32)(unsafe.Pointer(bp))), bp+4)
	if status != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
			(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7815, -1))
		return status
	}
	for i = 0; i < 4; i++ {
		*(*uintptr)(unsafe.Pointer(bp + 20 /* &regsObjs[0] */ + uintptr(i)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32(*(*uint32)(unsafe.Pointer(bp + 4 + uintptr(i)*4))))
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 4, bp+20))
	return 0
}

// Used to do basic checks of the TCL_HASH_KEY_SYSTEM_HASH flag

func TestHashSystemHashCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:6876:1: */
	bp := tls.Alloc(160)
	defer tls.Free(160)

	// var hash Tcl_HashTable at bp+100, 56

	var hPtr uintptr
	var i int32
	// var isNew int32 at bp+156, 4

	*(*int32)(unsafe.Pointer(bp + 96 /* limit */)) = 100

	if objc > 1 && (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+96) != 0 {
		return 1
	}

	(*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(tclStubsPtr + 1700)))(tls, bp+100, -2, uintptr(unsafe.Pointer(&hkType)))

	if (*Tcl_HashTable)(unsafe.Pointer(bp+100 /* &hash */)).numEntries != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+7839, uintptr(0)))
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
		return 1
	}

	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 96 /* limit */)); i++ {
		hPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(bp + 100 + 48)))(tls, bp+100, uintptr(i), bp+156)
		if !(*(*int32)(unsafe.Pointer(bp + 156)) != 0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, i))
			(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+7861, -1)
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
			return 1
		}
		(*Tcl_HashEntry)(unsafe.Pointer(hPtr)).clientData = uintptr(i + 42)
	}

	if (*Tcl_HashTable)(unsafe.Pointer(bp+100 /* &hash */)).numEntries != *(*int32)(unsafe.Pointer(bp + 96 /* limit */)) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+7879, uintptr(0)))
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
		return 1
	}

	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 96 /* limit */)); i++ {
		hPtr = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(bp + 100 + 44)))(tls, bp+100, uintptr(i))
		if hPtr == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, i))
			(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+7903, -1)
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
			return 1
		}
		if int32((*Tcl_HashEntry)(unsafe.Pointer(hPtr)).clientData) != i+42 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, i))
			(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+7919, -1)
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
			return 1
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 440)))(tls, hPtr)
	}

	if (*Tcl_HashTable)(unsafe.Pointer(bp+100 /* &hash */)).numEntries != 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+48, ts+7934, uintptr(0)))
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
		return 1
	}

	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 444)))(tls, bp+100)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+72, ts+7954, uintptr(0)))
	return 0
}

var hkType = Tcl_HashKeyType{
	version:         1,
	flags:           0x2,
	hashKeyProc:     uintptr(0),
	compareKeysProc: uintptr(0),
	allocEntryProc:  uintptr(0),
	freeEntryProc:   uintptr(0),
} /* tclTest.c:6882:34 */

// Used for testing Tcl_GetInt which is no longer used directly by the
// core very much.
func TestgetintCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:6952:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	if argc < 2 {
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 936)))(tls, interp, ts+1396, uintptr(0))
		return 1
	} else {
		// var val int32 at bp, 4

		var i int32
		var total int32 = 0

		for i = 1; i < argc; i++ {
			if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp) != 0 {
				return 1
			}
			total = total + *(*int32)(unsafe.Pointer(bp))
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, total))
		return 0
	}
	return int32(0)
}

func NREUnwind_callback(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 { /* tclTest.c:6976:1: */
	bp := tls.Alloc(16)
	defer tls.Free(16)

	// var none int32 at bp, 4

	if *(*ClientData)(unsafe.Pointer(data + uintptr(0)*4)) == libc.UintptrFromInt32(-1) {
		(*(*func(*libc.TLS, uintptr, uintptr, ClientData, ClientData, ClientData, ClientData))(unsafe.Pointer(tclStubsPtr + 2356)))(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, uintptr, int32) int32
		}{NREUnwind_callback})), bp /* &none */, libc.UintptrFromInt32(-1),
			libc.UintptrFromInt32(-1), uintptr(0))
	} else if *(*ClientData)(unsafe.Pointer(data + uintptr(1)*4)) == libc.UintptrFromInt32(-1) {
		(*(*func(*libc.TLS, uintptr, uintptr, ClientData, ClientData, ClientData, ClientData))(unsafe.Pointer(tclStubsPtr + 2356)))(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, uintptr, int32) int32
		}{NREUnwind_callback})), *(*ClientData)(unsafe.Pointer(data + uintptr(0)*4)), bp, /* &none */
			libc.UintptrFromInt32(-1), uintptr(0))
	} else if *(*ClientData)(unsafe.Pointer(data + uintptr(2)*4)) == libc.UintptrFromInt32(-1) {
		(*(*func(*libc.TLS, uintptr, uintptr, ClientData, ClientData, ClientData, ClientData))(unsafe.Pointer(tclStubsPtr + 2356)))(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, uintptr, int32) int32
		}{NREUnwind_callback})), *(*ClientData)(unsafe.Pointer(data + uintptr(0)*4)), *(*ClientData)(unsafe.Pointer(data + uintptr(1)*4)),
			bp /* &none */, uintptr(0))
	} else {
		// var idata [3]uintptr at bp+4, 12

		*(*uintptr)(unsafe.Pointer(bp + 4 /* &idata[0] */ + uintptr(0)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (int32(*(*ClientData)(unsafe.Pointer(data + uintptr(1)*4)))-int32(*(*ClientData)(unsafe.Pointer(data + uintptr(0)*4))))/1)
		*(*uintptr)(unsafe.Pointer(bp + 4 /* &idata[0] */ + uintptr(1)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (int32(*(*ClientData)(unsafe.Pointer(data + uintptr(2)*4)))-int32(*(*ClientData)(unsafe.Pointer(data + uintptr(0)*4))))/1)
		*(*uintptr)(unsafe.Pointer(bp + 4 /* &idata[0] */ + uintptr(2)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (int32(bp)-int32(*(*ClientData)(unsafe.Pointer(data + uintptr(0)*4))))/1)
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 3, bp+4))
	}
	return 0
}

func TestNREUnwind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:7003:1: */
	// Insure that callbacks effectively run at the proper level during the
	// unwinding of the NRE stack.

	(*(*func(*libc.TLS, uintptr, uintptr, ClientData, ClientData, ClientData, ClientData))(unsafe.Pointer(tclStubsPtr + 2356)))(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr, uintptr, int32) int32
	}{NREUnwind_callback})), libc.UintptrFromInt32(-1), libc.UintptrFromInt32(-1),
		libc.UintptrFromInt32(-1), uintptr(0))
	return 0
}

func TestNRELevels(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:7021:1: */
	bp := tls.Alloc(28)
	defer tls.Free(28)

	var iPtr uintptr = interp
	// var depth ptrdiff_t at bp, 4

	// var levels [6]uintptr at bp+4, 24

	var i int32 = 0
	var cbPtr uintptr = (*ExecEnv1)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).execEnvPtr)).callbackPtr

	if refDepth == uintptr(0) {
		refDepth = bp /* &depth */
	}

	*(*ptrdiff_t)(unsafe.Pointer(bp /* depth */)) = (int32(refDepth) - int32(bp)) / 4

	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(0)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*ptrdiff_t)(unsafe.Pointer(bp)))
	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(1)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*Interp)(unsafe.Pointer(iPtr)).numLevels)
	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(2)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*CmdFrame)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).cmdFramePtr)).level)
	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(3)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*CallFrame)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).varFramePtr)).level)
	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(4)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32(((*ExecStack)(unsafe.Pointer((*ExecEnv1)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).execEnvPtr)).execStackPtr)).tosPtr-
		((*ExecEnv1)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).execEnvPtr)).execStackPtr+20))/4))

	for cbPtr != 0 {
		i++
		cbPtr = (*NRE_callback)(unsafe.Pointer(cbPtr)).nextPtr
	}
	*(*uintptr)(unsafe.Pointer(bp + 4 /* &levels[0] */ + uintptr(5)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, i)

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 6, bp+4))
	return 0
}

var refDepth uintptr = uintptr(0) /* tclTest.c:7028:22 */

//----------------------------------------------------------------------
//
// TestconcatobjCmd --
//
//	This procedure implements the "testconcatobj" command. It is used
//	to test that Tcl_ConcatObj does indeed return a fresh Tcl_Obj in all
//	cases and thet it never corrupts its arguments. In other words, that
//	[Bug 1447328] was fixed properly.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestconcatobjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, argc int32, argv uintptr) int32 { /* tclTest.c:7077:1: */
	bp := tls.Alloc(844)
	defer tls.Free(844)

	var list1Ptr uintptr
	var list2Ptr uintptr
	var emptyPtr uintptr
	var concatPtr uintptr
	var tmpPtr uintptr
	var result int32 = 0
	// var len int32 at bp+816, 4

	// var objv [3]uintptr at bp+820, 12

	// Set the start of the error message as obj result; it will be cleared at
	// the end if no errors were found.

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
		(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7957, -1))

	emptyPtr = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)

	list1Ptr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7982, -1)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), list1Ptr, bp+816)
	if (*Tcl_Obj)(unsafe.Pointer(list1Ptr)).bytes != uintptr(0) {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*Tcl_Obj)(unsafe.Pointer(list1Ptr)).bytes)
		(*Tcl_Obj)(unsafe.Pointer(list1Ptr)).bytes = uintptr(0)
	}

	list2Ptr = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+7994, -1)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), list2Ptr, bp+816)
	if (*Tcl_Obj)(unsafe.Pointer(list2Ptr)).bytes != uintptr(0) {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, (*Tcl_Obj)(unsafe.Pointer(list2Ptr)).bytes)
		(*Tcl_Obj)(unsafe.Pointer(list2Ptr)).bytes = uintptr(0)
	}

	// Verify that concat'ing a list obj with one or more empty strings does
	// return a fresh Tcl_Obj (see also [Bug 2055782]).

	tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)

	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = emptyPtr
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 2, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp, ts+8005 /* "\n\t* (a) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+8048,
			uintptr(0)))
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 0:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+48, ts+8084, uintptr(0)))
			break
			fallthrough
		case 1:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+72, ts+8102, uintptr(0)))
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+96, ts+8119, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	}
	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	(*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount++
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 2, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+120, ts+8197 /* "\n\t* (b) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+144, ts+8240,
			uintptr(0)))
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 0:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+168, ts+8276, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
			break
			fallthrough
		case 1:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+192, ts+8084, uintptr(0)))
			break
			fallthrough
		case 2:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+216, ts+8102, uintptr(0)))
			for ok1 := true; ok1; ok1 = 0 != 0 {
				var _objPtr uintptr = tmpPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+240, ts+8119, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	}
	for ok2 := true; ok2; ok2 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = emptyPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = tmpPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(2)*4)) = emptyPtr
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 3, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+264, ts+8296 /* "\n\t* (c) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+288, ts+8339,
			uintptr(0)))
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 0:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+312, ts+8084, uintptr(0)))
			break
			fallthrough
		case 1:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+336, ts+8102, uintptr(0)))
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+360, ts+8119, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = tmpPtr
	}
	for ok3 := true; ok3; ok3 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	(*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount++
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 3, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+384, ts+8375 /* "\n\t* (d) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+408, ts+8418,
			uintptr(0)))
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 0:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+432, ts+8276, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
			break
			fallthrough
		case 1:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+456, ts+8084, uintptr(0)))
			break
			fallthrough
		case 2:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+480, ts+8102, uintptr(0)))
			for ok4 := true; ok4; ok4 = 0 != 0 {
				var _objPtr uintptr = tmpPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+504, ts+8119, uintptr(0)))
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 16)))(tls, ts+8151, 0)
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = tmpPtr
	}
	for ok5 := true; ok5; ok5 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	// Verify that an unshared list is not corrupted when concat'ing things to
	// it.

	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = list2Ptr
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 2, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+528, ts+8454 /* "\n\t* (e) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		// var len int32 at bp+832, 4

		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+552, ts+8497,
			uintptr(0)))

		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), concatPtr, bp+832)
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 3:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+576, ts+8533, uintptr(0)))
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+600, ts+8552, uintptr(0)))
		}
		if (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount > 1 {
			for ok6 := true; ok6; ok6 = 0 != 0 {
				var _objPtr uintptr = tmpPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	}
	for ok7 := true; ok7; ok7 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = list2Ptr
	(*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount++
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 2, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+624, ts+8571 /* "\n\t* (f) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		// var len int32 at bp+836, 4

		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+648, ts+8614,
			uintptr(0)))

		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), concatPtr, bp+836)
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 3:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+672, ts+8533, uintptr(0)))
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+696, ts+8552, uintptr(0)))
		}
		if (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount > 1 {
			for ok8 := true; ok8; ok8 = 0 != 0 {
				var _objPtr uintptr = tmpPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	}
	for ok9 := true; ok9; ok9 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(1)*4)) = list2Ptr
	(*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount++
	(*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount++
	concatPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 76)))(tls, 2, bp+820)
	if (*Tcl_Obj)(unsafe.Pointer(concatPtr)).refCount != 0 {
		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp,
			libc.VaList(bp+720, ts+8650 /* "\n\t* (g) concatOb..." */, uintptr(0)))
	}
	if concatPtr == tmpPtr {
		// var len int32 at bp+840, 4

		result = 1
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+744, ts+8693,
			uintptr(0)))

		(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 196)))(tls, uintptr(0), concatPtr, bp+840)
		switch (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount {
		case 3:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+768, ts+8533, uintptr(0)))
			break
			fallthrough
		default:
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+792, ts+8552, uintptr(0)))
		}
		for ok10 := true; ok10; ok10 = 0 != 0 {
			var _objPtr uintptr = tmpPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
		if (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount > 1 {
			for ok11 := true; ok11; ok11 = 0 != 0 {
				var _objPtr uintptr = tmpPtr
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
		}
		tmpPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, list1Ptr)
		*(*uintptr)(unsafe.Pointer(bp + 820 /* &objv[0] */ + uintptr(0)*4)) = tmpPtr
	}
	for ok12 := true; ok12; ok12 = 0 != 0 {
		var _objPtr uintptr = concatPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	// Clean everything up. Note that we don't actually know how many
	// references there are to tmpPtr here; in the no-error case, it should be
	// five... [Bug 2895367]

	for ok13 := true; ok13; ok13 = 0 != 0 {
		var _objPtr uintptr = list1Ptr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	for ok14 := true; ok14; ok14 = 0 != 0 {
		var _objPtr uintptr = list2Ptr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	for ok15 := true; ok15; ok15 = 0 != 0 {
		var _objPtr uintptr = emptyPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	for (*Tcl_Obj)(unsafe.Pointer(tmpPtr)).refCount > 1 {
		for ok16 := true; ok16; ok16 = 0 != 0 {
			var _objPtr uintptr = tmpPtr
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
	for ok17 := true; ok17; ok17 = 0 != 0 {
		var _objPtr uintptr = tmpPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	if result == 0 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
	}
	return result
}

//----------------------------------------------------------------------
//
// TestparseargsCmd --
//
//	This procedure implements the "testparseargs" command. It is used to
//	test that Tcl_ParseArgsObjv does indeed return the right number of
//	arguments. In other words, that [Bug 3413857] was fixed properly.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestparseargsCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:7380:1: */
	bp := tls.Alloc(116)
	defer tls.Free(116)

	*(*int32)(unsafe.Pointer(bp + 96 /* count */)) = objc
	// var remObjv uintptr at bp+100, 4

	// var result [3]uintptr at bp+104, 12

	*(*[4]Tcl_ArgvInfo)(unsafe.Pointer(bp /* argTable */)) = [4]Tcl_ArgvInfo{
		{
			__type:     15,
			keyStr:     ts + 8729, /* "-bool" */
			srcPtr:     uintptr(1),
			dstPtr:     uintptr(unsafe.Pointer(&foo)),
			helpStr:    ts + 8735, /* "booltest" */
			clientData: uintptr(0)},
		{
			__type:     18,
			keyStr:     ts + 4823, /* "--" */
			srcPtr:     uintptr(0),
			dstPtr:     uintptr(0),
			helpStr:    ts + 8744, /* "Marks the end of..." */
			clientData: uintptr(0)}, {
			__type:     22,
			keyStr:     ts + 8773, /* "-help" */
			srcPtr:     uintptr(0),
			dstPtr:     uintptr(0),
			helpStr:    ts + 8779, /* "Print summary of..." */
			clientData: uintptr(0)}, {
			__type:     23,
			keyStr:     uintptr(0),
			srcPtr:     uintptr(0),
			dstPtr:     uintptr(0),
			helpStr:    uintptr(0),
			clientData: uintptr(0)},
	}

	foo = 0
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 2424)))(tls, interp, bp, bp+96, objv, bp+100) != 0 {
		return 1
	}
	*(*uintptr)(unsafe.Pointer(bp + 104 /* &result[0] */ + uintptr(0)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, foo)
	*(*uintptr)(unsafe.Pointer(bp + 104 /* &result[0] */ + uintptr(1)*4)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 96)))
	*(*uintptr)(unsafe.Pointer(bp + 104 /* &result[0] */ + uintptr(2)*4)) = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, *(*int32)(unsafe.Pointer(bp + 96)), *(*uintptr)(unsafe.Pointer(bp + 100)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 3, bp+104))
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, *(*uintptr)(unsafe.Pointer(bp + 100)))
	return 0
}

var foo int32 = 0 /* tclTest.c:7386:16 */

// *
// Test harness for command and variable resolvers.

func InterpCmdResolver(tls *libc.TLS, interp uintptr, name uintptr, context uintptr, flags int32, rPtr uintptr) int32 { /* tclTest.c:7411:1: */
	var iPtr uintptr = interp
	var varFramePtr uintptr = (*Interp)(unsafe.Pointer(iPtr)).varFramePtr
	var procPtr uintptr
	if (*CallFrame)(unsafe.Pointer(varFramePtr)).isProcCallFrame&0x1 != 0 {
		procPtr = (*CallFrame)(unsafe.Pointer(varFramePtr)).procPtr
	} else {
		procPtr = uintptr(0)
	}
	var callerNsPtr uintptr = (*CallFrame)(unsafe.Pointer(varFramePtr)).nsPtr
	var resolvedCmdPtr Tcl_Command = uintptr(0)

	// Just do something special on a cmd literal "z" in two cases:
	//  A)  when the caller is a proc "x", and the proc is either in "::" or in "::ns2".
	//  B) the caller's namespace is "ctx1" or "ctx2"
	if int32(*(*int8)(unsafe.Pointer(name + uintptr(0)))) == 'z' && int32(*(*int8)(unsafe.Pointer(name + uintptr(1)))) == 0 {
		var ns2NsPtr uintptr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(tclIntStubsPtr + 476)))(tls, interp, ts+8827, uintptr(0), 0)

		if procPtr != uintptr(0) &&
			((*Command1)(unsafe.Pointer((*Proc)(unsafe.Pointer(procPtr)).cmdPtr)).nsPtr == (*Interp)(unsafe.Pointer(iPtr)).globalNsPtr ||
				ns2NsPtr != uintptr(0) && (*Command1)(unsafe.Pointer((*Proc)(unsafe.Pointer(procPtr)).cmdPtr)).nsPtr == ns2NsPtr) {
			// Case A)
			//
			//    - The context, in which this resolver becomes active, is
			//      determined by the name of the caller proc, which has to be
			//      named "x".
			//
			//    - To determine the name of the caller proc, the proc is taken
			//      from the topmost stack frame.
			//
			//    - Note that the context is NOT provided during byte-code
			//      compilation (e.g. in TclProcCompileProc)
			//
			//   When these conditions hold, this function resolves the
			//   passed-in cmd literal into a cmd "y", which is taken from the
			//   the global namespace (for simplicity).

			var callingCmdName uintptr = (*(*func(*libc.TLS, uintptr, Tcl_Command) uintptr)(unsafe.Pointer(tclStubsPtr + 648)))(tls, interp, (*Proc)(unsafe.Pointer(procPtr)).cmdPtr)

			if int32(*(*int8)(unsafe.Pointer(callingCmdName + uintptr(0)))) == 'x' && int32(*(*int8)(unsafe.Pointer(callingCmdName + uintptr(1)))) == 0 {
				resolvedCmdPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Command)(unsafe.Pointer(tclIntStubsPtr + 472)))(tls, interp, ts+8833, uintptr(0), 1)
			}
		} else if callerNsPtr != uintptr(0) {
			// Case B)
			//
			//    - The context, in which this resolver becomes active, is
			//      determined by the name of the parent namespace, which has
			//      to be named "ctx1" or "ctx2".
			//
			//    - To determine the name of the parent namesace, it is taken
			//      from the 2nd highest stack frame.
			//
			//    - Note that the context can be provided during byte-code
			//      compilation (e.g. in TclProcCompileProc)
			//
			//   When these conditions hold, this function resolves the
			//   passed-in cmd literal into a cmd "y" or "Y" depending on the
			//   context. The resolved procs are taken from the the global
			//   namespace (for simplicity).

			var parentFramePtr uintptr = (*CallFrame)(unsafe.Pointer(varFramePtr)).callerPtr
			var context uintptr
			if parentFramePtr != uintptr(0) {
				context = (*Namespace)(unsafe.Pointer((*CallFrame)(unsafe.Pointer(parentFramePtr)).nsPtr)).name
			} else {
				context = ts + 8835 /* "(NULL)" */
			}

			if libc.Xstrcmp(tls, context, ts+8842) == 0 && int32(*(*int8)(unsafe.Pointer(name + uintptr(0)))) == 'z' && int32(*(*int8)(unsafe.Pointer(name + uintptr(1)))) == 0 {
				resolvedCmdPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Command)(unsafe.Pointer(tclIntStubsPtr + 472)))(tls, interp, ts+8833, uintptr(0), 1)
				// fprintf(stderr, "... y ==> %p\n", resolvedCmdPtr);

			} else if libc.Xstrcmp(tls, context, ts+8847) == 0 && int32(*(*int8)(unsafe.Pointer(name + uintptr(0)))) == 'z' && int32(*(*int8)(unsafe.Pointer(name + uintptr(1)))) == 0 {
				resolvedCmdPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Command)(unsafe.Pointer(tclIntStubsPtr + 472)))(tls, interp, ts+8852, uintptr(0), 1)
				//fprintf(stderr, "... Y ==> %p\n", resolvedCmdPtr);
			}
		}

		if resolvedCmdPtr != uintptr(0) {
			*(*Tcl_Command)(unsafe.Pointer(rPtr)) = resolvedCmdPtr
			return 0
		}
	}
	return 4
}

func InterpVarResolver(tls *libc.TLS, interp uintptr, name uintptr, context uintptr, flags int32, rPtr uintptr) int32 { /* tclTest.c:7504:1: */
	// Don't resolve the variable; use standard rules.

	return 4
}

type MyResolvedVarInfo1 = struct {
	vInfo   Tcl_ResolvedVarInfo
	__var   Tcl_Var
	nameObj uintptr
} /* tclTest.c:7518:9 */

type MyResolvedVarInfo = MyResolvedVarInfo1 /* tclTest.c:7522:3 */

func HashVarFree(tls *libc.TLS, var1 Tcl_Var) { /* tclTest.c:7525:1: */
	if (*VarInHash)(unsafe.Pointer(var1)).refCount < 2 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, var1)
	} else {
		(*VarInHash)(unsafe.Pointer(var1)).refCount--
	}
}

func MyCompiledVarFree(tls *libc.TLS, vInfoPtr uintptr) { /* tclTest.c:7536:1: */
	var resVarInfo uintptr = vInfoPtr

	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = (*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).nameObj
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}
	if (*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).__var != 0 {
		HashVarFree(tls, (*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).__var)
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, vInfoPtr)
}

func MyCompiledVarFetch(tls *libc.TLS, interp uintptr, vinfoPtr uintptr) Tcl_Var { /* tclTest.c:7552:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	var resVarInfo uintptr = vinfoPtr
	var var1 Tcl_Var = (*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).__var
	// var isNewVar int32 at bp, 4

	var iPtr uintptr = interp
	var hPtr uintptr

	if var1 != uintptr(0) {
		if !((*Var)(unsafe.Pointer(var1)).flags&0x8 != 0) {
			// The cached variable is valid, return it.

			return var1
		}

		// The variable is not valid anymore. Clean it up.

		HashVarFree(tls, var1)
	}

	hPtr = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer((*Interp)(unsafe.Pointer(iPtr)).globalNsPtr + 152 + 48)))(tls, (*Interp)(unsafe.Pointer(iPtr)).globalNsPtr+152, (*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).nameObj, bp)
	if hPtr != 0 {
		var1 = hPtr - uintptr(int32(uintptr(0)+12))
	} else {
		var1 = uintptr(0)
	}
	(*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).__var = var1

	// Increment the reference counter to avoid ckfree() of the variable in
	// Tcl's FreeVarEntry(); for cleanup, we provide our own HashVarFree();

	(*VarInHash)(unsafe.Pointer(var1)).refCount++
	return var1
}

func InterpCompiledVarResolver(tls *libc.TLS, interp uintptr, name uintptr, length int32, context uintptr, rPtr uintptr) int32 { /* tclTest.c:7597:1: */
	if int32(*(*int8)(unsafe.Pointer(name))) == 'T' {
		var resVarInfo uintptr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(unsafe.Sizeof(MyResolvedVarInfo{})))

		(*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).vInfo.fetchProc = *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, uintptr) Tcl_Var
		}{MyCompiledVarFetch}))
		(*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).vInfo.deleteProc = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{MyCompiledVarFree}))
		(*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).__var = uintptr(0)
		(*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).nameObj = (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, name, -1)
		(*Tcl_Obj)(unsafe.Pointer((*MyResolvedVarInfo)(unsafe.Pointer(resVarInfo)).nameObj)).refCount++
		*(*uintptr)(unsafe.Pointer(rPtr)) = resVarInfo
		return 0
	}
	return 4
}

func TestInterpResolverCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTest.c:7619:1: */
	bp := tls.Alloc(52)
	defer tls.Free(52)

	// var idx int32 at bp+48, 4

	if objc < 2 || objc > 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+8854)
		return 1
	}
	if objc == 3 {
		interp = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 696)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))))
		if interp == uintptr(0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+8871, uintptr(0)))
			return 1
		}
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&table)), int32(unsafe.Sizeof(uintptr(0))), ts+8902, 1, bp+48) != 0 {
		return 1
	}
	switch *(*int32)(unsafe.Pointer(bp + 48 /* idx */)) {
	case 1: // up
		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr))(unsafe.Pointer(tclIntStubsPtr + 452)))(tls, interp, ts+8912, *(*uintptr)(unsafe.Pointer(&struct {
			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
		}{InterpCmdResolver})),
			*(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
			}{InterpVarResolver})), *(*uintptr)(unsafe.Pointer(&struct {
				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
			}{InterpCompiledVarResolver})))
		break
	case 0: //down
		if !((*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclIntStubsPtr + 528)))(tls, interp, ts+8912) != 0) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+24, ts+8931,
				uintptr(0)))
			return 1
		}
	}
	return 0
}

var table = [3]uintptr{
	ts + 8968 /* "down" */, ts + 8973 /* "up" */, uintptr(0),
} /* tclTest.c:7625:23 */

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// tab-width: 8
// indent-tabs-mode: nil
// End:

// Inline function declarations:

// Slot 69 is reserved
// Slot 70 is reserved
// Slot 71 is reserved
// Slot 72 is reserved
// Slot 77 is reserved
// Slot 79 is reserved

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// tclInt.h --
//
//	Declarations of things used internally by the Tcl interpreter.
//
// Copyright (c) 1987-1993 The Regents of the University of California.
// Copyright (c) 1993-1997 Lucent Technologies.
// Copyright (c) 1994-1998 Sun Microsystems, Inc.
// Copyright (c) 1998-1999 by Scriptics Corporation.
// Copyright (c) 2001, 2002 by Kevin B. Kenny.  All rights reserved.
// Copyright (c) 2007 Daniel A. Steffen <das@users.sourceforge.net>
// Copyright (c) 2006-2008 by Joe Mistachkin.  All rights reserved.
// Copyright (c) 2008 by Miguel Sofer. All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// tclStringRep.h --
//
//	This file contains the definition of the Unicode string internal
//	representation and macros to access it.
//
//	A Unicode string is an internationalized string. Conceptually, a
//	Unicode string is an array of 16-bit quantities organized as a
//	sequence of properly formed UTF-8 characters. There is a one-to-one
//	map between Unicode and UTF characters. Because Unicode characters
//	have a fixed width, operations such as indexing operate on Unicode
//	data. The String object is optimized for the case where each UTF char
//	in a string is only one byte. In this case, we store the value of
//	numChars, but we don't store the Unicode data (unless Tcl_GetUnicode
//	is explicitly called).
//
//	The String object type stores one or both formats. The default
//	behavior is to store UTF. Once Unicode is calculated by a function, it
//	is stored in the internal rep for future access (without an additional
//	O(n) cost).
//
//	To allow many appends to be done to an object without constantly
//	reallocating the space for the string or Unicode representation, we
//	allocate double the space for the string or Unicode and use the
//	internal representation to keep track of how much space is used vs.
//	allocated.
//
// Copyright (c) 1995-1997 Sun Microsystems, Inc.
// Copyright (c) 1999 by Scriptics Corporation.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// The following structure is the internal rep for a String object. It keeps
// track of how much memory has been used and how much has been allocated for
// the Unicode and UTF string to enable growing and shrinking of the UTF and
// Unicode reps of the String object with fewer mallocs. To optimize string
// length and indexing operations, this structure also stores the number of
// characters (same of UTF and Unicode!) once that value has been computed.
//
// Under normal configurations, what Tcl calls "Unicode" is actually UTF-16
// restricted to the Basic Multilingual Plane (i.e. U+00000 to U+0FFFF). This
// can be officially modified by altering the definition of Tcl_UniChar in
// tcl.h, but do not do that unless you are sure what you're doing!

type String1 = struct {
	numChars   int32
	allocated  int32
	maxChars   int32
	hasUnicode int32
	unicode    [1]Tcl_UniChar
	_          [2]byte
} /* tclStringRep.h:49:9 */

// Inline function declarations:

// Slot 69 is reserved
// Slot 70 is reserved
// Slot 71 is reserved
// Slot 72 is reserved
// Slot 77 is reserved
// Slot 79 is reserved

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// tclInt.h --
//
//	Declarations of things used internally by the Tcl interpreter.
//
// Copyright (c) 1987-1993 The Regents of the University of California.
// Copyright (c) 1993-1997 Lucent Technologies.
// Copyright (c) 1994-1998 Sun Microsystems, Inc.
// Copyright (c) 1998-1999 by Scriptics Corporation.
// Copyright (c) 2001, 2002 by Kevin B. Kenny.  All rights reserved.
// Copyright (c) 2007 Daniel A. Steffen <das@users.sourceforge.net>
// Copyright (c) 2006-2008 by Joe Mistachkin.  All rights reserved.
// Copyright (c) 2008 by Miguel Sofer. All rights reserved.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// super class file for PK algos

// default ... include all MPI

// RSA only (does not support DH/DSA/ECC)
// #define SC_RSA_1
// #define SC_RSA_1_WITH_TESTS

// For reference.... On an Athlon64 optimizing for speed...
//
//    LTM's mpi.o with all functions [striped] is 142KiB in size.
//

// Works for RSA only, mpi.o is 68KiB
// LibTomMath, multiple-precision integer library -- Tom St Denis
// SPDX-License-Identifier: Unlicense

// tclStringRep.h --
//
//	This file contains the definition of the Unicode string internal
//	representation and macros to access it.
//
//	A Unicode string is an internationalized string. Conceptually, a
//	Unicode string is an array of 16-bit quantities organized as a
//	sequence of properly formed UTF-8 characters. There is a one-to-one
//	map between Unicode and UTF characters. Because Unicode characters
//	have a fixed width, operations such as indexing operate on Unicode
//	data. The String object is optimized for the case where each UTF char
//	in a string is only one byte. In this case, we store the value of
//	numChars, but we don't store the Unicode data (unless Tcl_GetUnicode
//	is explicitly called).
//
//	The String object type stores one or both formats. The default
//	behavior is to store UTF. Once Unicode is calculated by a function, it
//	is stored in the internal rep for future access (without an additional
//	O(n) cost).
//
//	To allow many appends to be done to an object without constantly
//	reallocating the space for the string or Unicode representation, we
//	allocate double the space for the string or Unicode and use the
//	internal representation to keep track of how much space is used vs.
//	allocated.
//
// Copyright (c) 1995-1997 Sun Microsystems, Inc.
// Copyright (c) 1999 by Scriptics Corporation.
//
// See the file "license.terms" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.

// The following structure is the internal rep for a String object. It keeps
// track of how much memory has been used and how much has been allocated for
// the Unicode and UTF string to enable growing and shrinking of the UTF and
// Unicode reps of the String object with fewer mallocs. To optimize string
// length and indexing operations, this structure also stores the number of
// characters (same of UTF and Unicode!) once that value has been computed.
//
// Under normal configurations, what Tcl calls "Unicode" is actually UTF-16
// restricted to the Basic Multilingual Plane (i.e. U+00000 to U+0FFFF). This
// can be officially modified by altering the definition of Tcl_UniChar in
// tcl.h, but do not do that unless you are sure what you're doing!

type String = String1 /* tclStringRep.h:65:3 */

func VarPtrDeleteProc(tls *libc.TLS, clientData ClientData, interp uintptr) { /* tclTestObj.c:54:13: */
	var i int32
	var varPtr uintptr = clientData
	for i = 0; i < 20; i++ {
		if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4)) != 0 {
			for ok := true; ok; ok = 0 != 0 {
				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4))
				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
				}
			}
		}
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 408)))(tls, interp, ts+8976)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, varPtr)
}

func GetVarPtr(tls *libc.TLS, interp uintptr) uintptr { /* tclTestObj.c:65:16: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var proc uintptr at bp, 4

	return (*(*func(*libc.TLS, uintptr, uintptr, uintptr) ClientData)(unsafe.Pointer(tclStubsPtr + 608)))(tls, interp, ts+8976, bp)
}

//----------------------------------------------------------------------
//
// TclObjTest_Init --
//
//	This function creates additional commands that are used to test the
//	Tcl object support.
//
// Results:
//	Returns a standard Tcl completion code, and leaves an error
//	message in the interp's result if an error occurs.
//
// Side effects:
//	Creates and registers several new testing commands.
//
//----------------------------------------------------------------------

func TclObjTest_Init(tls *libc.TLS, interp uintptr) int32 { /* tclTestObj.c:91:1: */
	var i int32
	// An array of Tcl_Obj pointers used in the commands that operate on or get
	// the values of Tcl object-valued variables. varPtr[i] is the i-th variable's
	// Tcl_Obj *.
	var varPtr uintptr

	varPtr = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(20)*uint32(unsafe.Sizeof(uintptr(0))))
	if !(varPtr != 0) {
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData))(unsafe.Pointer(tclStubsPtr + 900)))(tls, interp, ts+8976, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr)
	}{VarPtrDeleteProc})), varPtr)
	for i = 0; i < 20; i++ {
		*(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4)) = uintptr(0)
	}

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+8994, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestbignumobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9008, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestbooleanobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9023, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestdoubleobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9037, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestintobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9048, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestindexobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9061, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestlistobjCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9073, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestobjCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+9081, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TeststringobjCmd})),
		uintptr(0), uintptr(0))
	return 0
}

//----------------------------------------------------------------------
//
// TestbignumobjCmd --
//
//	This function implements the "testbignumobj" command.  It is used
//	to exercise the bignum Tcl object type implementation.
//
// Results:
//	Returns a standard Tcl object result.
//
// Side effects:
//	Creates and frees bignum objects; converts objects to have bignum
//	type.
//
//----------------------------------------------------------------------

func TestbignumobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:148:1: */
	bp := tls.Alloc(68)
	defer tls.Free(68)

	*(*[7]uintptr)(unsafe.Pointer(bp /* subcmds */)) = [7]uintptr{
		ts + 4165 /* "set" */, ts + 1534 /* "get" */, ts + 9095 /* "mult10" */, ts + 9102 /* "div10" */, ts + 9108 /* "iseven" */, ts + 9115 /* "radixsize" */, uintptr(0),
	}
	// var index int32 at bp+28, 4

	// var varIndex int32 at bp+32, 4

	var string uintptr
	// var bignumValue mp_int at bp+36, 16

	// var newValue mp_int at bp+52, 16

	var varPtr uintptr

	if objc < 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9125)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+3360, 0, bp+28) != 0 {
		return 1
	}
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if GetVariableIndex(tls, interp, string, bp+32 /* &varIndex */) != 0 {
		return 1
	}
	varPtr = GetVarPtr(tls, interp)

	switch *(*int32)(unsafe.Pointer(bp + 28 /* index */)) {
	case 0 /* BIGNUM_SET */ :
		if objc != 4 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9142)
			return 1
		}
		string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
		if (*(*func(*libc.TLS, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 92)))(tls, bp+36) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
				(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+9152, -1))
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, int32) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 152)))(tls, bp+36, string, 10) != 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
				(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+9169, -1))
			return 1
		}

		// If the object currently bound to the variable with index varIndex
		// has ref count 1 (i.e. the object is unshared) we can modify that
		// object directly.  Otherwise, if RC>1 (i.e. the object is shared),
		// we must create a new object to modify/set and decrement the old
		// formerly-shared object's ref count. This is "copy on write".

		if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 2236)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)), bp+36)
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 2228)))(tls, bp+36))
		}
		break

	case 1 /* BIGNUM_GET */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */))) != 0 {
			return 1
		}
		break

	case 2 /* BIGNUM_MULT10 */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */))) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 2240)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)),
			bp+36 /* &bignumValue */) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 92)))(tls, bp+52) != 0 ||
			(*(*func(*libc.TLS, uintptr, mp_digit, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 128)))(tls, bp+36, uint32(10), bp+52) != 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+52)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
				(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+9201, -1))
			return 1
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
		if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 2236)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)), bp+52)
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 2228)))(tls, bp+52))
		}
		break

	case 3 /* BIGNUM_DIV10 */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */))) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 2240)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)),
			bp+36 /* &bignumValue */) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 92)))(tls, bp+52) != 0 ||
			(*(*func(*libc.TLS, uintptr, mp_digit, uintptr, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 64)))(tls, bp+36, uint32(10), bp+52, uintptr(0)) != 0 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+52)
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp,
				(*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+9219, -1))
			return 1
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
		if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 2236)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)), bp+52)
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 2228)))(tls, bp+52))
		}
		break

	case 4 /* BIGNUM_ISEVEN */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */))) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 2240)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)),
			bp+36 /* &bignumValue */) != 0 {
			return 1
		}
		if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)), libc.BoolInt32(!(func() int32 {
				if (*mp_int)(unsafe.Pointer(bp+36)).used != 0 && *(*mp_digit)(unsafe.Pointer((*mp_int)(unsafe.Pointer(bp+36)).dp + uintptr(0)*4))&mp_digit(1) == mp_digit(1) {
					return 1
				}
				return 0
			}() != 0)))
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, libc.BoolInt32(!(func() int32 {
				if (*mp_int)(unsafe.Pointer(bp+36)).used != 0 && *(*mp_digit)(unsafe.Pointer((*mp_int)(unsafe.Pointer(bp+36)).dp + uintptr(0)*4))&mp_digit(1) == mp_digit(1) {
					return 1
				}
				return 0
			}() != 0))))
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
		break

	case 5 /* BIGNUM_RADIXSIZE */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */))) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 2240)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)),
			bp+36 /* &bignumValue */) != 0 {
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, int32, uintptr) mp_err)(unsafe.Pointer(tclTomMathStubsPtr + 148)))(tls, bp+36, 10, bp+28) != 0 {
			return 1
		}
		if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)), *(*int32)(unsafe.Pointer(bp + 28)))
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 32 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 28))))
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclTomMathStubsPtr + 32)))(tls, bp+36)
		break
	}

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*4)))
	return 0
}

//----------------------------------------------------------------------
//
// TestbooleanobjCmd --
//
//	This function implements the "testbooleanobj" command.  It is used to
//	test the boolean Tcl object type implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees boolean objects, and also converts objects to
//	have boolean type.
//
//----------------------------------------------------------------------

func TestbooleanobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:347:1: */
	bp := tls.Alloc(48)
	defer tls.Free(48)

	// var varIndex int32 at bp+40, 4

	// var boolValue int32 at bp+44, 4

	var index uintptr
	var subCmd uintptr
	var varPtr uintptr

	if !(objc < 3) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9237)
	return 1
__1:
	;

	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+40) != 0) {
		goto __2
	}
	return 1
__2:
	;

	varPtr = GetVarPtr(tls, interp)

	subCmd = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	if !(libc.Xstrcmp(tls, subCmd, ts+4165) == 0) {
		goto __3
	}
	if !(objc != 4) {
		goto __5
	}
	goto wrongNumArgs
__5:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+44) != 0) {
		goto __6
	}
	return 1
__6:
	;

	// If the object currently bound to the variable with index varIndex
	// has ref count 1 (i.e. the object is unshared) we can modify that
	// object directly. Otherwise, if RC>1 (i.e. the object is shared),
	// we must create a new object to modify/set and decrement the old
	// formerly-shared object's ref count. This is "copy on write".

	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __7
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), libc.Bool32(*(*int32)(unsafe.Pointer(bp + 44)) != 0))
	goto __8
__7:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 44)) != 0)))
__8:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __4
__3:
	if !(libc.Xstrcmp(tls, subCmd, ts+1534) == 0) {
		goto __9
	}
	if !(objc != 3) {
		goto __11
	}
	goto wrongNumArgs
__11:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __12
	}
	return 1
__12:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __10
__9:
	if !(libc.Xstrcmp(tls, subCmd, ts+9258) == 0) {
		goto __13
	}
	if !(objc != 3) {
		goto __15
	}
	goto wrongNumArgs
__15:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __16
	}
	return 1
__16:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)),
		bp+44) != 0) {
		goto __17
	}
	return 1
__17:
	;
	if !!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1) {
		goto __18
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), libc.Bool32(libc.BoolInt32(!(*(*int32)(unsafe.Pointer(bp + 44)) != 0)) != 0))
	goto __19
__18:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, libc.Bool32(libc.BoolInt32(!(*(*int32)(unsafe.Pointer(bp + 44)) != 0)) != 0)))
__19:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __14
__13:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		libc.VaList(bp, ts+1428 /* "bad option \"" */, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),
			ts+9262 /* "\": must be set, ..." */, uintptr(0)))
	return 1
__14:
	;
__10:
	;
__4:
	;
	return 0
}

//----------------------------------------------------------------------
//
// TestdoubleobjCmd --
//
//	This function implements the "testdoubleobj" command.  It is used to
//	test the double-precision floating point Tcl object type
//	implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees double objects, and also converts objects to
//	have double type.
//
//----------------------------------------------------------------------

func TestdoubleobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:447:1: */
	bp := tls.Alloc(56)
	defer tls.Free(56)

	// var varIndex int32 at bp+40, 4

	// var doubleValue float64 at bp+48, 8

	var index uintptr
	var subCmd uintptr
	var string uintptr
	var varPtr uintptr

	if !(objc < 3) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9237)
	return 1
__1:
	;

	varPtr = GetVarPtr(tls, interp)

	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+40) != 0) {
		goto __2
	}
	return 1
__2:
	;

	subCmd = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	if !(libc.Xstrcmp(tls, subCmd, ts+4165) == 0) {
		goto __3
	}
	if !(objc != 4) {
		goto __5
	}
	goto wrongNumArgs
__5:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 144)))(tls, interp, string, bp+48) != 0) {
		goto __6
	}
	return 1
__6:
	;

	// If the object currently bound to the variable with index varIndex
	// has ref count 1 (i.e. the object is unshared) we can modify that
	// object directly. Otherwise, if RC>1 (i.e. the object is shared), we
	// must create a new object to modify/set and decrement the old
	// formerly-shared object's ref count. This is "copy on write".

	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __7
	}
	(*(*func(*libc.TLS, uintptr, float64))(unsafe.Pointer(tclStubsPtr + 248)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*float64)(unsafe.Pointer(bp + 48)))
	goto __8
__7:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, float64) uintptr)(unsafe.Pointer(tclStubsPtr + 212)))(tls, *(*float64)(unsafe.Pointer(bp + 48))))
__8:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __4
__3:
	if !(libc.Xstrcmp(tls, subCmd, ts+1534) == 0) {
		goto __9
	}
	if !(objc != 3) {
		goto __11
	}
	goto wrongNumArgs
__11:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __12
	}
	return 1
__12:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __10
__9:
	if !(libc.Xstrcmp(tls, subCmd, ts+9095) == 0) {
		goto __13
	}
	if !(objc != 3) {
		goto __15
	}
	goto wrongNumArgs
__15:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __16
	}
	return 1
__16:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 148)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)),
		bp+48) != 0) {
		goto __17
	}
	return 1
__17:
	;
	if !!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1) {
		goto __18
	}
	(*(*func(*libc.TLS, uintptr, float64))(unsafe.Pointer(tclStubsPtr + 248)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*float64)(unsafe.Pointer(bp + 48))*10.0)
	goto __19
__18:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, float64) uintptr)(unsafe.Pointer(tclStubsPtr + 212)))(tls, *(*float64)(unsafe.Pointer(bp + 48))*10.0))
__19:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __14
__13:
	if !(libc.Xstrcmp(tls, subCmd, ts+9102) == 0) {
		goto __20
	}
	if !(objc != 3) {
		goto __22
	}
	goto wrongNumArgs
__22:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __23
	}
	return 1
__23:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 148)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)),
		bp+48) != 0) {
		goto __24
	}
	return 1
__24:
	;
	if !!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1) {
		goto __25
	}
	(*(*func(*libc.TLS, uintptr, float64))(unsafe.Pointer(tclStubsPtr + 248)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*float64)(unsafe.Pointer(bp + 48))/10.0)
	goto __26
__25:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, float64) uintptr)(unsafe.Pointer(tclStubsPtr + 212)))(tls, *(*float64)(unsafe.Pointer(bp + 48))/10.0))
__26:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __21
__20:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		libc.VaList(bp, ts+1428 /* "bad option \"" */, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),
			ts+9290 /* "\": must be set, ..." */, uintptr(0)))
	return 1
__21:
	;
__14:
	;
__10:
	;
__4:
	;
	return 0
}

//----------------------------------------------------------------------
//
// TestindexobjCmd --
//
//	This function implements the "testindexobj" command. It is used to
//	test the index Tcl object type implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees int objects, and also converts objects to
//	have int type.
//
//----------------------------------------------------------------------

func TestindexobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:565:1: */
	bp := tls.Alloc(16)
	defer tls.Free(16)

	// var allowAbbrev int32 at bp+12, 4

	// var index int32 at bp+4, 4

	// var index2 int32 at bp, 4

	// var setError int32 at bp+8, 4

	var i int32
	var result int32
	var argv uintptr
	var indexRep uintptr

	if objc == 3 && libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),
		ts+9328) == 0 {
		// This code checks to be sure that the results of Tcl_GetIndexFromObj
		// are properly cached in the object and returned on subsequent
		// lookups.

		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp) != 0 {
			return 1
		}

		(*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&tablePtr)), int32(unsafe.Sizeof(uintptr(0))), ts+9334, 0, bp+4)
		indexRep = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)) + 16 /* &.internalRep */ /* &.twoPtrValue */ /* &.ptr1 */))
		(*IndexRep)(unsafe.Pointer(indexRep)).index = *(*int32)(unsafe.Pointer(bp /* index2 */))
		result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&tablePtr)), int32(unsafe.Sizeof(uintptr(0))), ts+9334, 0, bp+4)
		if result == 0 {
			(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), *(*int32)(unsafe.Pointer(bp + 4)))
		}
		return result
	}

	if objc < 5 {
		(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+1396, -1)
		return 1
	}

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+8) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 136)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)), bp+12) != 0 {
		return 1
	}

	argv = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(objc-3)*uint32(unsafe.Sizeof(uintptr(0))))
	for i = 4; i < objc; i++ {
		*(*uintptr)(unsafe.Pointer(argv + uintptr(i-4)*4)) = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
	}
	*(*uintptr)(unsafe.Pointer(argv + uintptr(objc-4)*4)) = uintptr(0)

	// Tcl_GetIndexFromObj assumes that the table is statically-allocated so
	// that its address is different for each index object. If we accidently
	// allocate a table at the same address as that cached in the index
	// object, clear out the object's cached state.

	if (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr != uintptr(0) &&
		!(libc.Xstrcmp(tls, ts+9340, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr)).name) != 0) {
		indexRep = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)) + 16 /* &.internalRep */ /* &.twoPtrValue */ /* &.ptr1 */))
		if (*IndexRep)(unsafe.Pointer(indexRep)).tablePtr == argv {
			if (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr != uintptr(0) {
				if (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr)).freeIntRepProc != uintptr(0) {
					(*(*func(*libc.TLS, uintptr))(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr + 4)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
				}
				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))).typePtr = uintptr(0)
			}

		}
	}

	result = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, func() uintptr {
		if *(*int32)(unsafe.Pointer(bp + 8 /* setError */)) != 0 {
			return interp
		}
		return uintptr(0)
	}(), *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), argv, int32(unsafe.Sizeof(uintptr(0))), ts+9334 /* "token" */, func() int32 {
		if *(*int32)(unsafe.Pointer(bp + 12 /* allowAbbrev */)) != 0 {
			return 0
		}
		return 1
	}(), bp+4 /* &index */)
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, argv)
	if result == 0 {
		(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), *(*int32)(unsafe.Pointer(bp + 4)))
	}
	return result
}

// Keep this structure declaration in sync with tclIndexObj.c
type IndexRep = struct {
	tablePtr uintptr
	offset   int32
	index    int32
} /* tclTestObj.c:577:5 */

var tablePtr = [4]uintptr{ts + 5901 /* "a" */, ts + 7416 /* "b" */, ts + 9328 /* "check" */, uintptr(0)} /* tclTestObj.c:573:23 */

//----------------------------------------------------------------------
//
// TestintobjCmd --
//
//	This function implements the "testintobj" command. It is used to
//	test the int Tcl object type implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees int objects, and also converts objects to
//	have int type.
//
//----------------------------------------------------------------------

func TestintobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:668:1: */
	bp := tls.Alloc(56)
	defer tls.Free(56)

	// var intValue int32 at bp+52, 4

	// var varIndex int32 at bp+40, 4

	// var i int32 at bp+44, 4

	// var longValue int32 at bp+48, 4

	var index uintptr
	var subCmd uintptr
	var string uintptr
	var varPtr uintptr
	var maxLong int32

	if !(objc < 3) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9237)
	return 1
__1:
	;

	varPtr = GetVarPtr(tls, interp)
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+40) != 0) {
		goto __2
	}
	return 1
__2:
	;

	subCmd = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	if !(libc.Xstrcmp(tls, subCmd, ts+4165) == 0) {
		goto __3
	}
	if !(objc != 4) {
		goto __5
	}
	goto wrongNumArgs
__5:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, string, bp+44) != 0) {
		goto __6
	}
	return 1
__6:
	;
	*(*int32)(unsafe.Pointer(bp + 52 /* intValue */)) = *(*int32)(unsafe.Pointer(bp + 44 /* i */))

	// If the object currently bound to the variable with index varIndex
	// has ref count 1 (i.e. the object is unshared) we can modify that
	// object directly. Otherwise, if RC>1 (i.e. the object is shared), we
	// must create a new object to modify/set and decrement the old
	// formerly-shared object's ref count. This is "copy on write".

	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __7
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*int32)(unsafe.Pointer(bp + 52)))
	goto __8
__7:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 52))))
__8:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __4
__3:
	if !(libc.Xstrcmp(tls, subCmd, ts+9346) == 0) {
		goto __9
	} // doesn't set result
	if !(objc != 4) {
		goto __11
	}
	goto wrongNumArgs
__11:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, string, bp+44) != 0) {
		goto __12
	}
	return 1
__12:
	;
	*(*int32)(unsafe.Pointer(bp + 52 /* intValue */)) = *(*int32)(unsafe.Pointer(bp + 44 /* i */))
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __13
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*int32)(unsafe.Pointer(bp + 52)))
	goto __14
__13:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 52))))
__14:
	;
	goto __10
__9:
	if !(libc.Xstrcmp(tls, subCmd, ts+9351) == 0) {
		goto __15
	}
	if !(objc != 4) {
		goto __17
	}
	goto wrongNumArgs
__17:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, string, bp+44) != 0) {
		goto __18
	}
	return 1
__18:
	;
	*(*int32)(unsafe.Pointer(bp + 52 /* intValue */)) = *(*int32)(unsafe.Pointer(bp + 44 /* i */))
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __19
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 260)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), int32(*(*int32)(unsafe.Pointer(bp + 52))))
	goto __20
__19:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, int32(*(*int32)(unsafe.Pointer(bp + 52)))))
__20:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __16
__15:
	if !(libc.Xstrcmp(tls, subCmd, ts+9359) == 0) {
		goto __21
	}
	maxLong = 0x7fffffff
	if !(objc != 3) {
		goto __23
	}
	goto wrongNumArgs
__23:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1)) {
		goto __24
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 260)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), maxLong)
	goto __25
__24:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 224)))(tls, maxLong))
__25:
	;
	goto __22
__21:
	if !(libc.Xstrcmp(tls, subCmd, ts+9370) == 0) {
		goto __26
	}
	if !(objc != 3) {
		goto __28
	}
	goto wrongNumArgs
__28:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __29
	}
	return 1
__29:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 164)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), bp+48) != 0) {
		goto __30
	}
	return 1
__30:
	;
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		func() uintptr {
			if *(*int32)(unsafe.Pointer(bp + 48 /* longValue */)) == 0x7fffffff {
				return ts + 6692 /* "1" */
			}
			return ts + 6694 /* "0" */
		}(), -1)
	goto __27
__26:
	if !(libc.Xstrcmp(tls, subCmd, ts+1534) == 0) {
		goto __31
	}
	if !(objc != 3) {
		goto __33
	}
	goto wrongNumArgs
__33:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __34
	}
	return 1
__34:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __32
__31:
	if !(libc.Xstrcmp(tls, subCmd, ts+9380) == 0) {
		goto __35
	}
	if !(objc != 3) {
		goto __37
	}
	goto wrongNumArgs
__37:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __38
	}
	return 1
__38:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), string, -1)
	goto __36
__35:
	if !(libc.Xstrcmp(tls, subCmd, ts+9385) == 0) {
		goto __39
	}
	// If long ints have more bits than ints on this platform, verify that
	// Tcl_GetIntFromObj returns an error if the long int held in an
	// integer object's internal representation is too large to fit in an
	// int.

	if !(objc != 3) {
		goto __41
	}
	goto wrongNumArgs
__41:
	;
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+6692, -1)
	goto __40
__39:
	if !(libc.Xstrcmp(tls, subCmd, ts+9095) == 0) {
		goto __42
	}
	if !(objc != 3) {
		goto __44
	}
	goto wrongNumArgs
__44:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __45
	}
	return 1
__45:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)),
		bp+52) != 0) {
		goto __46
	}
	return 1
__46:
	;
	if !!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1) {
		goto __47
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*int32)(unsafe.Pointer(bp + 52))*10)
	goto __48
__47:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 52))*10))
__48:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __43
__42:
	if !(libc.Xstrcmp(tls, subCmd, ts+9102) == 0) {
		goto __49
	}
	if !(objc != 3) {
		goto __51
	}
	goto wrongNumArgs
__51:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 40))) != 0) {
		goto __52
	}
	return 1
__52:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)),
		bp+52) != 0) {
		goto __53
	}
	return 1
__53:
	;
	if !!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))).refCount > 1) {
		goto __54
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)), *(*int32)(unsafe.Pointer(bp + 52))/10)
	goto __55
__54:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 40 /* varIndex */)), (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, *(*int32)(unsafe.Pointer(bp + 52))/10))
__55:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)))
	goto __50
__49:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		libc.VaList(bp, ts+1428 /* "bad option \"" */, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),
			ts+9399 /* "\": must be set, ..." */, uintptr(0)))
	return 1
__50:
	;
__43:
	;
__40:
	;
__36:
	;
__32:
	;
__27:
	;
__22:
	;
__16:
	;
__10:
	;
__4:
	;
	return 0
}

//-----------------------------------------------------------------------------
//
// TestlistobjCmd --
//
//	This function implements the 'testlistobj' command. It is used to
//	test a few possible corner cases in list object manipulation from
//	C code that cannot occur at the Tcl level.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates, manipulates and frees list objects.
//
//-----------------------------------------------------------------------------

func TestlistobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:872:1: */
	bp := tls.Alloc(28)
	defer tls.Free(28)

	// Subcommands supported by this command
	*(*[3]uintptr)(unsafe.Pointer(bp + 4 /* subcommands */)) = [3]uintptr{
		ts + 4165, /* "set" */
		ts + 1534, /* "get" */
		ts + 9443, /* "replace" */
	}
	var index uintptr // Argument giving the variable number
	// var varIndex int32 at bp, 4
	// Variable number converted to binary
	// var cmdIndex int32 at bp+16, 4
	// Ordinal number of the subcommand
	// var first int32 at bp+20, 4
	// First index in the list
	// var count int32 at bp+24, 4
	// Count of elements in a list
	var varPtr uintptr

	if objc < 3 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9451)
		return 1
	}
	varPtr = GetVarPtr(tls, interp)
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if GetVariableIndex(tls, interp, index, bp /* &varIndex */) != 0 {
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+4, int32(unsafe.Sizeof(uintptr(0))), ts+4595, 0, bp+16) != 0 {
		return 1
	}
	switch *(*int32)(unsafe.Pointer(bp + 16 /* cmdIndex */)) {
	case 0 /* LISTOBJ_SET */ :
		if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)) != uintptr(0) && !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)))).refCount > 1) {
			(*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(tclStubsPtr + 256)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)), objc-3, objv+uintptr(3)*4)
		} else {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp /* varIndex */)), (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, objc-3, objv+uintptr(3)*4))
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)))
		break

	case 1 /* LISTOBJ_GET */ :
		if objc != 3 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv, ts+9192)
			return 1
		}
		if CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp /* varIndex */))) != 0 {
			return 1
		}
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)))
		break

	case 2 /* LISTOBJ_REPLACE */ :
		if objc < 5 {
			(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 2, objv,
				ts+9471 /* "varIndex start c..." */)
			return 1
		}
		if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+20) != 0 ||
			(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(4)*4)), bp+24) != 0 {
			return 1
		}
		if (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)))).refCount > 1 {
			SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4))))
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
		return (*(*func(*libc.TLS, uintptr, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 200)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp)))*4)), *(*int32)(unsafe.Pointer(bp + 20)), *(*int32)(unsafe.Pointer(bp + 24)),
			objc-5, objv+uintptr(5)*4)
	}
	return 0
}

//----------------------------------------------------------------------
//
// TestobjCmd --
//
//	This function implements the "testobj" command. It is used to test
//	the type-independent portions of the Tcl object type implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees objects.
//
//----------------------------------------------------------------------

func TestobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:969:1: */
	bp := tls.Alloc(92)
	defer tls.Free(92)

	// var varIndex int32 at bp+80, 4

	// var destIndex int32 at bp+84, 4

	var i int32
	var index uintptr
	var subCmd uintptr
	var string uintptr
	var targetType uintptr
	var varPtr uintptr
	var listObjPtr uintptr
	// var elemObjPtr uintptr at bp+88, 4

	var typeName uintptr
	var _objPtr uintptr
	var typeName1 uintptr

	if !(objc < 2) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9237)
	return 1
__1:
	;

	varPtr = GetVarPtr(tls, interp)
	subCmd = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	if !(libc.Xstrcmp(tls, subCmd, ts+9505) == 0) {
		goto __2
	}
	if !(objc != 4) {
		goto __4
	}
	goto wrongNumArgs
__4:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __5
	}
	return 1
__5:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __6
	}
	return 1
__6:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !(GetVariableIndex(tls, interp, string, bp+84) != 0) {
		goto __7
	}
	return 1
__7:
	;
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 84 /* destIndex */)), *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80 /* varIndex */)))*4)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 84)))*4)))
	goto __3
__2:
	if !(libc.Xstrcmp(tls, subCmd, ts+9512) == 0) {
		goto __8
	}
	if !(objc != 2) {
		goto __10
	}
	goto wrongNumArgs
__10:
	;
	*(*uintptr)(unsafe.Pointer(bp + 88 /* elemObjPtr */)) = (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, 123)
	listObjPtr = (*(*func(*libc.TLS, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 220)))(tls, 1, bp+88)
	// Replace the single list element through itself, nonsense but legal.
	(*(*func(*libc.TLS, uintptr, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 200)))(tls, interp, listObjPtr, 0, 1, 1, bp+88)
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, listObjPtr)
	return 0
	goto __9
__8:
	if !(libc.Xstrcmp(tls, subCmd, ts+9523) == 0) {
		goto __11
	}

	if !(objc != 4) {
		goto __13
	}
	goto wrongNumArgs
__13:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __14
	}
	return 1
__14:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __15
	}
	return 1
__15:
	;
	typeName = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !(libc.AssignUintptr(&targetType, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 168)))(tls, typeName)) == uintptr(0)) {
		goto __16
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		libc.VaList(bp, ts+9531 /* "no type " */, typeName, ts+9540 /* " found" */, uintptr(0)))
	return 1
__16:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 80)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)), targetType) !=
		0) {
		goto __17
	}
	return 1
__17:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))
	goto __12
__11:
	if !(libc.Xstrcmp(tls, subCmd, ts+9547) == 0) {
		goto __18
	}
	if !(objc != 4) {
		goto __20
	}
	goto wrongNumArgs
__20:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __21
	}
	return 1
__21:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __22
	}
	return 1
__22:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	if !(GetVariableIndex(tls, interp, string, bp+84) != 0) {
		goto __23
	}
	return 1
__23:
	;
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 84 /* destIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4))))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 84)))*4)))
	goto __19
__18:
	if !(libc.Xstrcmp(tls, subCmd, ts+9557) == 0) {
		goto __24
	}
	if !(objc != 2) {
		goto __26
	}
	goto wrongNumArgs
__26:
	;
	i = 0
__27:
	if !(i < 20) {
		goto __29
	}
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4)) != uintptr(0)) {
		goto __30
	}
__31:
	_objPtr = *(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4))
	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1) {
		goto __34
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
__34:
	;
	goto __32
__32:
	if 0 != 0 {
		goto __31
	}
	goto __33
__33:
	;
	*(*uintptr)(unsafe.Pointer(varPtr + uintptr(i)*4)) = uintptr(0)
__30:
	;
	goto __28
__28:
	i++
	goto __27
	goto __29
__29:
	;
	goto __25
__24:
	if !(libc.Xstrcmp(tls, subCmd, ts+9569) == 0) {
		goto __35
	}
	if !(objc != 3) {
		goto __37
	}
	goto wrongNumArgs
__37:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __38
	}
	return 1
__38:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __39
	}
	return 1
__39:
	;
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 176)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))
	goto __36
__35:
	if !(libc.Xstrcmp(tls, subCmd, ts+9589) == 0) {
		goto __40
	}
	if !(objc != 3) {
		goto __42
	}
	goto wrongNumArgs
__42:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __43
	}
	return 1
__43:
	;
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 80 /* varIndex */)), (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))
	goto __41
__40:
	if !(libc.Xstrcmp(tls, subCmd, ts+9596) == 0) {
		goto __44
	}

	// Return an object containing the name of the argument's type of
	// internal rep. If none exists, return "none".

	if !(objc != 3) {
		goto __46
	}
	goto wrongNumArgs
__46:
	;
	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))).typePtr == uintptr(0)) {
		goto __47
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, ts+6511, -1))
	goto __48
__47:
	typeName1 = (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))).typePtr)).name
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, typeName1, -1))
__48:
	;
	goto __45
__44:
	if !(libc.Xstrcmp(tls, subCmd, ts+6705) == 0) {
		goto __49
	}
	if !(objc != 3) {
		goto __51
	}
	goto wrongNumArgs
__51:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __52
	}
	return 1
__52:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __53
	}
	return 1
__53:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))).refCount))
	goto __50
__49:
	if !(libc.Xstrcmp(tls, subCmd, ts+6714) == 0) {
		goto __54
	}
	if !(objc != 3) {
		goto __56
	}
	goto wrongNumArgs
__56:
	;
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+80) != 0) {
		goto __57
	}
	return 1
__57:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 80))) != 0) {
		goto __58
	}
	return 1
__58:
	;
	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)))).typePtr == uintptr(0)) {
		goto __59
	} // a string!
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+4107, -1)
	goto __60
__59:
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		(*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 80 /* varIndex */)))*4)))).typePtr)).name, -1)
__60:
	;
	goto __55
__54:
	if !(libc.Xstrcmp(tls, subCmd, ts+9604) == 0) {
		goto __61
	}
	if !(objc != 2) {
		goto __63
	}
	goto wrongNumArgs
__63:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 64)))(tls, interp,
		(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp)) != 0) {
		goto __64
	}
	return 1
__64:
	;
	goto __62
__61:
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
		libc.VaList(bp+40, ts+1428 /* "bad option \"" */, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),

			ts+9610 /* "\": must be assig..." */, uintptr(0)))
	return 1
__62:
	;
__55:
	;
__50:
	;
__45:
	;
__41:
	;
__36:
	;
__25:
	;
__19:
	;
__12:
	;
__9:
	;
__3:
	;
	return 0
}

//----------------------------------------------------------------------
//
// TeststringobjCmd --
//
//	This function implements the "teststringobj" command. It is used to
//	test the string Tcl object type implementation.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	Creates and frees string objects, and also converts objects to
//	have string type.
//
//----------------------------------------------------------------------

func TeststringobjCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestObj.c:1173:1: */
	bp := tls.Alloc(168)
	defer tls.Free(168)

	var unicode uintptr
	// var varIndex int32 at bp+104, 4

	// var option int32 at bp+108, 4

	// var i int32 at bp+164, 4

	// var length int32 at bp+112, 4

	var index uintptr
	var string uintptr
	// var strings [12]uintptr at bp+116, 48

	var strPtr uintptr
	var varPtr uintptr

	if !(objc < 3) {
		goto __1
	}
wrongNumArgs:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9237)
	return 1
__1:
	;

	varPtr = GetVarPtr(tls, interp)
	index = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4)))
	if !(GetVariableIndex(tls, interp, index, bp+104) != 0) {
		goto __2
	}
	return 1
__2:
	;

	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&options2)), int32(unsafe.Sizeof(uintptr(0))), ts+3360, 0, bp+108) !=
		0) {
		goto __3
	}
	return 1
__3:
	;
	switch *(*int32)(unsafe.Pointer(bp + 108 /* option */)) {
	case 0:
		goto __5
	case 1:
		goto __6
	case 2:
		goto __7
	case 3:
		goto __8
	case 4:
		goto __9
	case 5:
		goto __10
	case 6:
		goto __11
	case 7:
		goto __12
	case 8:
		goto __13
	case 9:
		goto __14
	case 10:
		goto __15
	case 11:
		goto __16
	case 12:
		goto __17
	}
	goto __4
__5: // append
	if !(objc != 5) {
		goto __18
	}
	goto wrongNumArgs
__18:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(4)*4)), bp+112) != 0) {
		goto __19
	}
	return 1
__19:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) == uintptr(0)) {
		goto __20
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
__20:
	;

	// If the object bound to variable "varIndex" is shared, we must
	// "copy on write" and append to a copy of the object.

	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))).refCount > 1) {
		goto __21
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4))))
__21:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), string, *(*int32)(unsafe.Pointer(bp + 112)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__6: // appendstrings
	if !(objc > 11+3) {
		goto __22
	}
	goto wrongNumArgs
__22:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) == uintptr(0)) {
		goto __23
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
__23:
	;

	// If the object bound to variable "varIndex" is shared, we must
	// "copy on write" and append to a copy of the object.

	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))).refCount > 1) {
		goto __24
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4))))
__24:
	;
	*(*int32)(unsafe.Pointer(bp + 164 /* i */)) = 3
__25:
	if !(*(*int32)(unsafe.Pointer(bp + 164)) < objc) {
		goto __27
	}
	*(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(*(*int32)(unsafe.Pointer(bp + 164))-3)*4)) = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(*(*int32)(unsafe.Pointer(bp + 164)))*4)))
	goto __26
__26:
	*(*int32)(unsafe.Pointer(bp + 164 /* i */))++
	goto __25
	goto __27
__27:
	;
__28:
	if !(*(*int32)(unsafe.Pointer(bp + 164)) < 12+3) {
		goto __30
	}
	*(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(*(*int32)(unsafe.Pointer(bp + 164))-3)*4)) = uintptr(0)
	goto __29
__29:
	*(*int32)(unsafe.Pointer(bp + 164 /* i */))++
	goto __28
	goto __30
__30:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 116 + uintptr(0)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 + uintptr(1)*4)),
		*(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(2)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(3)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(4)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(5)*4)),
		*(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(6)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(7)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(8)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(9)*4)),
		*(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(10)*4)), *(*uintptr)(unsafe.Pointer(bp + 116 /* &strings[0] */ + uintptr(11)*4))))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__7: // get
	if !(objc != 3) {
		goto __31
	}
	goto wrongNumArgs
__31:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 104))) != 0) {
		goto __32
	}
	return 1
__32:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__8: // get2
	if !(objc != 3) {
		goto __33
	}
	goto wrongNumArgs
__33:
	;
	if !(CheckIfVarUnset(tls, interp, varPtr, *(*int32)(unsafe.Pointer(bp + 104))) != 0) {
		goto __34
	}
	return 1
__34:
	;
	string = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), string, -1)
	goto __4
__9: // length
	if !(objc != 3) {
		goto __35
	}
	goto wrongNumArgs
__35:
	;
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), func() int32 {
		if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)))*4)) != uintptr(0) {
			return (*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)))*4)))).length
		}
		return -1
	}())
	goto __4
__10: // length2
	if !(objc != 3) {
		goto __36
	}
	goto wrongNumArgs
__36:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) != uintptr(0)) {
		goto __37
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 80)))(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)),
		(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 168)))(tls, ts+4107))
	strPtr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)))*4)) + 16 /* &.internalRep */ /* &.twoPtrValue */ /* &.ptr1 */))
	*(*int32)(unsafe.Pointer(bp + 112 /* length */)) = (*String)(unsafe.Pointer(strPtr)).allocated
	goto __38
__37:
	*(*int32)(unsafe.Pointer(bp + 112 /* length */)) = -1
__38:
	;
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), *(*int32)(unsafe.Pointer(bp + 112)))
	goto __4
__11: // set
	if !(objc != 4) {
		goto __39
	}
	goto wrongNumArgs
__39:
	;

	// If the object currently bound to the variable with index
	// varIndex has ref count 1 (i.e. the object is unshared) we can
	// modify that object directly. Otherwise, if RC>1 (i.e. the
	// object is shared), we must create a new object to modify/set
	// and decrement the old formerly-shared object's ref count. This
	// is "copy on write".

	string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+112)
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) != uintptr(0) &&
		!((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))).refCount > 1)) {
		goto __40
	}
	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 268)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), string, *(*int32)(unsafe.Pointer(bp + 112)))
	goto __41
__40:
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls, string, *(*int32)(unsafe.Pointer(bp + 112))))
__41:
	;
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__12: // set2
	if !(objc != 4) {
		goto __42
	}
	goto wrongNumArgs
__42:
	;
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	goto __4
__13: // setlength
	if !(objc != 4) {
		goto __43
	}
	goto wrongNumArgs
__43:
	;
	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+112) != 0) {
		goto __44
	}
	return 1
__44:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) != uintptr(0)) {
		goto __45
	}
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 264)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), *(*int32)(unsafe.Pointer(bp + 112)))
__45:
	;
	goto __4
__14: // maxchars
	if !(objc != 3) {
		goto __46
	}
	goto wrongNumArgs
__46:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) != uintptr(0)) {
		goto __47
	}
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 80)))(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)),
		(*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 168)))(tls, ts+4107))
	strPtr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)))*4)) + 16 /* &.internalRep */ /* &.twoPtrValue */ /* &.ptr1 */))
	*(*int32)(unsafe.Pointer(bp + 112 /* length */)) = (*String)(unsafe.Pointer(strPtr)).maxChars
	goto __48
__47:
	*(*int32)(unsafe.Pointer(bp + 112 /* length */)) = -1
__48:
	;
	(*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 252)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), *(*int32)(unsafe.Pointer(bp + 112)))
	goto __4
__15: // getunicode
	if !(objc != 3) {
		goto __49
	}
	goto wrongNumArgs
__49:
	;
	(*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1744)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), uintptr(0))
	goto __4
__16: // appendself
	if !(objc != 4) {
		goto __50
	}
	goto wrongNumArgs
__50:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) == uintptr(0)) {
		goto __51
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
__51:
	;

	// If the object bound to variable "varIndex" is shared, we must
	// "copy on write" and append to a copy of the object.

	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))).refCount > 1) {
		goto __52
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4))))
__52:
	;

	string = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 172)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), bp+112)

	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+164) != 0) {
		goto __53
	}
	return 1
__53:
	;
	if !(*(*int32)(unsafe.Pointer(bp + 164)) < 0 || *(*int32)(unsafe.Pointer(bp + 164)) > *(*int32)(unsafe.Pointer(bp + 112))) {
		goto __54
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls,
		ts+9714 /* "index value out ..." */, -1))
	return 1
__54:
	;

	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), string+uintptr(*(*int32)(unsafe.Pointer(bp + 164))), *(*int32)(unsafe.Pointer(bp + 112))-*(*int32)(unsafe.Pointer(bp + 164)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__17: // appendself2
	if !(objc != 4) {
		goto __55
	}
	goto wrongNumArgs
__55:
	;
	if !(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)) == uintptr(0)) {
		goto __56
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls))
__56:
	;

	// If the object bound to variable "varIndex" is shared, we must
	// "copy on write" and append to a copy of the object.

	if !((*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))).refCount > 1) {
		goto __57
	}
	SetVarToObj(tls, varPtr, *(*int32)(unsafe.Pointer(bp + 104 /* varIndex */)), (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 124)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4))))
__57:
	;

	unicode = (*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1744)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), bp+112)

	if !((*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)), bp+164) != 0) {
		goto __58
	}
	return 1
__58:
	;
	if !(*(*int32)(unsafe.Pointer(bp + 164)) < 0 || *(*int32)(unsafe.Pointer(bp + 164)) > *(*int32)(unsafe.Pointer(bp + 112))) {
		goto __59
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, uintptr, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 232)))(tls,
		ts+9714 /* "index value out ..." */, -1))
	return 1
__59:
	;

	(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 1544)))(tls, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)), unicode+uintptr(*(*int32)(unsafe.Pointer(bp + 164)))*2, *(*int32)(unsafe.Pointer(bp + 112))-*(*int32)(unsafe.Pointer(bp + 164)))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, *(*uintptr)(unsafe.Pointer(varPtr + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*4)))
	goto __4
__4:
	;

	return 0
}

var options2 = [14]uintptr{
	ts + 2518 /* "append" */, ts + 9739 /* "appendstrings" */, ts + 1534 /* "get" */, ts + 9380 /* "get2" */, ts + 3258 /* "length" */, ts + 9753, /* "length2" */
	ts + 4165 /* "set" */, ts + 9346 /* "set2" */, ts + 9761 /* "setlength" */, ts + 9771 /* "maxchars" */, ts + 9780, /* "getunicode" */
	ts + 9791 /* "appendself" */, ts + 9802 /* "appendself2" */, uintptr(0),
} /* tclTestObj.c:1185:23 */

//----------------------------------------------------------------------
//
// SetVarToObj --
//
//	Utility routine to assign a Tcl_Obj* to a test variable. The
//	Tcl_Obj* can be NULL.
//
// Results:
//	None.
//
// Side effects:
//	This routine handles ref counting details for assignment: i.e. the old
//	value's ref count must be decremented (if not NULL) and the new one
//	incremented (also if not NULL).
//
//----------------------------------------------------------------------

func SetVarToObj(tls *libc.TLS, varPtr uintptr, varIndex int32, objPtr uintptr) { /* tclTestObj.c:1446:1: */
	if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(varIndex)*4)) != uintptr(0) {
		for ok := true; ok; ok = 0 != 0 {
			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(varPtr + uintptr(varIndex)*4))
			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
				(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
			}
		}
	}
	*(*uintptr)(unsafe.Pointer(varPtr + uintptr(varIndex)*4)) = objPtr
	if objPtr != uintptr(0) {
		(*Tcl_Obj)(unsafe.Pointer(objPtr)).refCount++
	}
}

//----------------------------------------------------------------------
//
// GetVariableIndex --
//
//	Utility routine to get a test variable index from the command line.
//
// Results:
//	A standard Tcl object result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func GetVariableIndex(tls *libc.TLS, interp uintptr, string uintptr, indexPtr uintptr) int32 { /* tclTestObj.c:1477:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var index int32 at bp, 4

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 156)))(tls, interp, string, bp) != 0 {
		return 1
	}
	if *(*int32)(unsafe.Pointer(bp)) < 0 || *(*int32)(unsafe.Pointer(bp)) >= 20 {
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
		(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), ts+9814, -1)
		return 1
	}

	*(*int32)(unsafe.Pointer(indexPtr)) = *(*int32)(unsafe.Pointer(bp /* index */))
	return 0
}

//----------------------------------------------------------------------
//
// CheckIfVarUnset --
//
//	Utility function that checks whether a test variable is readable:
//	i.e., that varPtr[varIndex] is non-NULL.
//
// Results:
//	1 if the test variable is unset (NULL); 0 otherwise.
//
// Side effects:
//	Sets the interpreter result to an error message if the variable is
//	unset (NULL).
//
//----------------------------------------------------------------------

func CheckIfVarUnset(tls *libc.TLS, interp uintptr, varPtr uintptr, varIndex int32) int32 { /* tclTestObj.c:1518:1: */
	bp := tls.Alloc(72)
	defer tls.Free(72)

	if *(*uintptr)(unsafe.Pointer(varPtr + uintptr(varIndex)*4)) == uintptr(0) {
		// var buf [56]int8 at bp+16, 56

		libc.Xsprintf(tls, bp+16 /* &buf[0] */, ts+9833 /* "variable %d is u..." */, libc.VaList(bp, varIndex))
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 876)))(tls, interp)
		(*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(tclStubsPtr + 72)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), bp+16, -1)
		return 1
	}
	return 0
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Inline function declarations:

// Slot 69 is reserved
// Slot 70 is reserved
// Slot 71 is reserved
// Slot 72 is reserved
// Slot 77 is reserved
// Slot 79 is reserved

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// name and version of this package

var packageName = *(*[13]int8)(unsafe.Pointer(ts + 9861 /* "procbodytest" */)) /* tclTestProcBodyObj.c:23:19 */
var packageVersion = *(*[4]int8)(unsafe.Pointer(ts + 9874 /* "1.1" */))        /* tclTestProcBodyObj.c:24:19 */

// Name of the commands exported by this package

var procCommand = *(*[5]int8)(unsafe.Pointer(ts + 9878 /* "proc" */))   /* tclTestProcBodyObj.c:30:19 */
var checkCommand = *(*[6]int8)(unsafe.Pointer(ts + 9328 /* "check" */)) /* tclTestProcBodyObj.c:31:19 */

// this struct describes an entry in the table of command names and command
// procs

type CmdTable1 = struct {
	cmdName  uintptr
	proc     uintptr
	exportIt int32
} /* tclTestProcBodyObj.c:38:9 */

// this struct describes an entry in the table of command names and command
// procs

type CmdTable = CmdTable1 /* tclTestProcBodyObj.c:42:3 */

// List of commands to create when the package is loaded; must go after the
// declarations of the enable command procedure.

var commands = [3]CmdTable{
	{
		cmdName:  0,
		proc:     0,
		exportIt: 1},
	{
		cmdName:  0,
		proc:     0,
		exportIt: 1},
	{},
} /* tclTestProcBodyObj.c:61:23 */

var safeCommands = [3]CmdTable{
	{
		cmdName:  0,
		proc:     0,
		exportIt: 1},
	{
		cmdName:  0,
		proc:     0,
		exportIt: 1},
	{},
} /* tclTestProcBodyObj.c:67:23 */

//----------------------------------------------------------------------
//
// Procbodytest_Init --
//
//	This function initializes the "procbodytest" package.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func Procbodytest_Init(tls *libc.TLS, interp uintptr) int32 { /* tclTestProcBodyObj.c:90:1: */
	return ProcBodyTestInitInternal(tls, interp, 0)
}

//----------------------------------------------------------------------
//
// Procbodytest_SafeInit --
//
//	This function initializes the "procbodytest" package.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func Procbodytest_SafeInit(tls *libc.TLS, interp uintptr) int32 { /* tclTestProcBodyObj.c:114:1: */
	return ProcBodyTestInitInternal(tls, interp, 1)
}

//----------------------------------------------------------------------
//
// RegisterCommand --
//
//	This function registers a command in the context of the given
//	namespace.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func RegisterCommand(tls *libc.TLS, interp uintptr, namespace uintptr, cmdTablePtr uintptr) int32 { /* tclTestProcBodyObj.c:139:1: */
	bp := tls.Alloc(176)
	defer tls.Free(176)

	// var buf [128]int8 at bp+48, 128

	if (*CmdTable)(unsafe.Pointer(cmdTablePtr)).exportIt != 0 {
		libc.Xsprintf(tls, bp+48 /* &buf[0] */, ts+9883, /* "namespace eval %..." */
			libc.VaList(bp, namespace, (*CmdTable)(unsafe.Pointer(cmdTablePtr)).cmdName))
		if (*(*func(*libc.TLS, uintptr, uintptr, int32, int32) int32)(unsafe.Pointer(tclStubsPtr + 1172)))(tls, interp, bp+48, -1, 0) != 0 {
			return 1
		}
	}

	libc.Xsprintf(tls, bp+48 /* &buf[0] */, ts+9925 /* "%s::%s" */, libc.VaList(bp+24, namespace, (*CmdTable)(unsafe.Pointer(cmdTablePtr)).cmdName))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, bp+48, (*CmdTable)(unsafe.Pointer(cmdTablePtr)).proc, uintptr(0), uintptr(0))
	return 0
}

//----------------------------------------------------------------------
//
// ProcBodyTestInitInternal --
//
//  This function initializes the Loader package.
//  The isSafe flag is 1 if the interpreter is safe, 0 otherwise.
//
// Results:
//  A standard Tcl result.
//
// Side effects:
//  None.
//
//----------------------------------------------------------------------

func ProcBodyTestInitInternal(tls *libc.TLS, interp uintptr, isSafe int32) int32 { /* tclTestProcBodyObj.c:179:1: */
	var cmdTablePtr uintptr

	if isSafe != 0 {
		cmdTablePtr = uintptr(unsafe.Pointer(&safeCommands)) + uintptr(0)*12
	} else {
		cmdTablePtr = uintptr(unsafe.Pointer(&commands)) + uintptr(0)*12
	}
	for ; (*CmdTable)(unsafe.Pointer(cmdTablePtr)).cmdName != 0; cmdTablePtr += 12 {
		if RegisterCommand(tls, interp, uintptr(unsafe.Pointer(&packageName)), cmdTablePtr) != 0 {
			return 1
		}
	}

	return (*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 8)))(tls, interp, uintptr(unsafe.Pointer(&packageName)), uintptr(unsafe.Pointer(&packageVersion)), uintptr(0))
}

//----------------------------------------------------------------------
//
// ProcBodyTestProcObjCmd --
//
//  Implements the "procbodytest::proc" command. Here is the command
//  description:
//	procbodytest::proc newName argList bodyName
//  Looks up a procedure called $bodyName and, if the procedure exists,
//  constructs a Tcl_Obj of type "procbody" and calls Tcl_ProcObjCmd.
//  Arguments:
//    newName		the name of the procedure to be created
//    argList		the argument list for the procedure
//    bodyName		the name of an existing procedure from which the
//			body is to be copied.
//  This command can be used to trigger the branches in Tcl_ProcObjCmd that
//  construct a proc from a "procbody", for example:
//	proc a {x} {return $x}
//	a 123
//	procbodytest::proc b {x} a
//  Note the call to "a 123", which is necessary so that the Proc pointer
//  for "a" is filled in by the internal compiler; this is a hack.
//
// Results:
//  Returns a standard Tcl code.
//
// Side effects:
//  A new procedure is created.
//  Leaves an error message in the interp's result on error.
//
//----------------------------------------------------------------------

func ProcBodyTestProcObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestProcBodyObj.c:230:1: */
	bp := tls.Alloc(140)
	defer tls.Free(140)

	var fullName uintptr
	var procCmd Tcl_Command
	var cmdPtr uintptr
	var procPtr uintptr = uintptr(0)
	var bodyObjPtr uintptr
	// var myobjv [5]uintptr at bp+120, 20

	var result int32

	if objc != 4 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+9932)
		return 1
	}

	// Find the Command pointer to this procedure

	fullName = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(3)*4)))
	procCmd = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32) Tcl_Command)(unsafe.Pointer(tclIntStubsPtr + 472)))(tls, interp, fullName, uintptr(0), 0x200)
	if procCmd == uintptr(0) {
		return 1
	}

	cmdPtr = procCmd

	// check that this is a procedure and not a builtin command:
	// If a procedure, cmdPtr->objClientData is TclIsProc(cmdPtr).

	if (*Command)(unsafe.Pointer(cmdPtr)).objClientData != (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclIntStubsPtr + 228)))(tls, cmdPtr) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
			libc.VaList(bp, ts+9958 /* "command \"" */, fullName, ts+9968 /* "\" is not a Tcl p..." */, uintptr(0)))
		return 1
	}

	// it is a Tcl procedure: the client data is the Proc structure

	procPtr = (*Command)(unsafe.Pointer(cmdPtr)).objClientData
	if procPtr == uintptr(0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp), libc.VaList(bp+40, ts+9993,
			fullName, ts+10005 /* "\" does not have ..." */, uintptr(0)))
		return 1
	}

	// create a new object, initialize our argument vector, call into Tcl

	bodyObjPtr = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclIntStubsPtr + 252)))(tls, procPtr)
	if bodyObjPtr == uintptr(0) {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 68)))(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 672)))(tls, interp),
			libc.VaList(bp+80, ts+10036, /* "failed to create..." */
				fullName, ts+1803 /* "\"" */, uintptr(0)))
		return 1
	}
	(*Tcl_Obj)(unsafe.Pointer(bodyObjPtr)).refCount++

	*(*uintptr)(unsafe.Pointer(bp + 120 /* &myobjv[0] */ + uintptr(0)*4)) = *(*uintptr)(unsafe.Pointer(objv + uintptr(0)*4))
	*(*uintptr)(unsafe.Pointer(bp + 120 /* &myobjv[0] */ + uintptr(1)*4)) = *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))
	*(*uintptr)(unsafe.Pointer(bp + 120 /* &myobjv[0] */ + uintptr(2)*4)) = *(*uintptr)(unsafe.Pointer(objv + uintptr(2)*4))
	*(*uintptr)(unsafe.Pointer(bp + 120 /* &myobjv[0] */ + uintptr(3)*4)) = bodyObjPtr
	*(*uintptr)(unsafe.Pointer(bp + 120 /* &myobjv[0] */ + uintptr(4)*4)) = uintptr(0)

	result = (*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1568)))(tls, uintptr(0), interp, objc, bp+120)
	for ok := true; ok; ok = 0 != 0 {
		var _objPtr uintptr = bodyObjPtr
		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).refCount, 1) <= 1 {
			(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 128)))(tls, _objPtr)
		}
	}

	return result
}

//----------------------------------------------------------------------
//
// ProcBodyTestCheckObjCmd --
//
//  Implements the "procbodytest::check" command. Here is the command
//  description:
//	procbodytest::check
//
//  Performs an internal check that the Tcl_PkgPresent() command returns
//  the same version number as was registered when the procbodytest package
//  was provided.  Places a boolean in the interp result indicating the
//  test outcome.
//
// Results:
//  Returns a standard Tcl code.
//
//----------------------------------------------------------------------

func ProcBodyTestCheckObjCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclTestProcBodyObj.c:329:1: */
	var version uintptr

	if objc != 1 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+1481)
		return 1
	}

	version = (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1096)))(tls, interp, uintptr(unsafe.Pointer(&packageName)), uintptr(unsafe.Pointer(&packageVersion)), 1, uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, libc.Bool32(libc.Bool32(libc.Xstrcmp(tls, version, uintptr(unsafe.Pointer(&packageVersion))) == 0) != 0)))
	return 0
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Inline function declarations:

// Slot 69 is reserved
// Slot 70 is reserved
// Slot 71 is reserved
// Slot 72 is reserved
// Slot 77 is reserved
// Slot 79 is reserved

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// Inline function declarations:

// Slot 69 is reserved
// Slot 70 is reserved
// Slot 71 is reserved
// Slot 72 is reserved
// Slot 77 is reserved
// Slot 79 is reserved

// !END!: Do not edit above this line.

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

// For TestplatformChmod on Windows
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

//** Autogenerated by WIDL 1.6 from include/wtypes.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type I_RPC_HANDLE = uintptr /* rpc.h:48:16 */
type RPC_STATUS = int32     /* rpc.h:49:20 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RPC_CSTR = uintptr                /* rpcdce.h:33:25 */
type RPC_WSTR = uintptr                /* rpcdce.h:34:26 */
type RPC_BINDING_HANDLE = I_RPC_HANDLE /* rpcdce.h:35:24 */
type handle_t = RPC_BINDING_HANDLE     /* rpcdce.h:36:30 */

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// __declspec(selectany) must be applied to initialized objects on GCC 5 hence must not be used here.

type UUID = GUID /* rpcdce.h:44:16 */

type _RPC_BINDING_VECTOR = struct {
	Count    uint32
	BindingH [1]RPC_BINDING_HANDLE
} /* rpcdce.h:50:11 */

type RPC_BINDING_VECTOR = _RPC_BINDING_VECTOR /* rpcdce.h:53:5 */

type _UUID_VECTOR = struct {
	Count uint32
	Uuid  [1]uintptr
} /* rpcdce.h:58:11 */

type UUID_VECTOR = _UUID_VECTOR /* rpcdce.h:61:5 */

type RPC_IF_HANDLE = uintptr /* rpcdce.h:66:16 */

type _RPC_IF_ID = struct {
	Uuid      UUID
	VersMajor uint16
	VersMinor uint16
} /* rpcdce.h:70:11 */

type RPC_IF_ID = _RPC_IF_ID /* rpcdce.h:74:5 */

type _RPC_PROTSEQ_VECTORA = struct {
	Count   uint32
	Protseq [1]uintptr
} /* rpcdce.h:124:11 */

type RPC_PROTSEQ_VECTORA = _RPC_PROTSEQ_VECTORA /* rpcdce.h:127:5 */

type _RPC_PROTSEQ_VECTORW = struct {
	Count   uint32
	Protseq [1]uintptr
} /* rpcdce.h:129:11 */

type RPC_PROTSEQ_VECTORW = _RPC_PROTSEQ_VECTORW /* rpcdce.h:132:5 */

type _RPC_POLICY = struct {
	Length        uint32
	EndpointFlags uint32
	NICFlags      uint32
} /* rpcdce.h:136:11 */

type RPC_POLICY = _RPC_POLICY /* rpcdce.h:140:5 */
type PRPC_POLICY = uintptr    /* rpcdce.h:140:16 */

type RPC_STATS_VECTOR = struct {
	Count uint32
	Stats [1]uint32
} /* rpcdce.h:151:5 */

type RPC_IF_ID_VECTOR = struct {
	Count uint32
	IfId  [1]uintptr
} /* rpcdce.h:161:5 */

type RPC_AUTH_IDENTITY_HANDLE = uintptr /* rpcdce.h:257:16 */
type RPC_AUTHZ_HANDLE = uintptr         /* rpcdce.h:258:16 */

type _RPC_SECURITY_QOS = struct {
	Version           uint32
	Capabilities      uint32
	IdentityTracking  uint32
	ImpersonationType uint32
} /* rpcdce.h:311:11 */

type RPC_SECURITY_QOS = _RPC_SECURITY_QOS /* rpcdce.h:316:5 */
type PRPC_SECURITY_QOS = uintptr          /* rpcdce.h:316:22 */

type _SEC_WINNT_AUTH_IDENTITY_W = struct {
	User           uintptr
	UserLength     uint32
	Domain         uintptr
	DomainLength   uint32
	Password       uintptr
	PasswordLength uint32
	Flags          uint32
} /* rpcdce.h:324:11 */

type SEC_WINNT_AUTH_IDENTITY_W = _SEC_WINNT_AUTH_IDENTITY_W /* rpcdce.h:332:5 */
type PSEC_WINNT_AUTH_IDENTITY_W = uintptr                   /* rpcdce.h:332:31 */

type _SEC_WINNT_AUTH_IDENTITY_A = struct {
	User           uintptr
	UserLength     uint32
	Domain         uintptr
	DomainLength   uint32
	Password       uintptr
	PasswordLength uint32
	Flags          uint32
} /* rpcdce.h:334:11 */

type SEC_WINNT_AUTH_IDENTITY_A = _SEC_WINNT_AUTH_IDENTITY_A /* rpcdce.h:342:5 */
type PSEC_WINNT_AUTH_IDENTITY_A = uintptr                   /* rpcdce.h:342:31 */

type _RPC_HTTP_TRANSPORT_CREDENTIALS_W = struct {
	TransportCredentials     uintptr
	Flags                    uint32
	AuthenticationTarget     uint32
	NumberOfAuthnSchemes     uint32
	AuthnSchemes             uintptr
	ServerCertificateSubject uintptr
} /* rpcdce.h:366:11 */

type RPC_HTTP_TRANSPORT_CREDENTIALS_W = _RPC_HTTP_TRANSPORT_CREDENTIALS_W /* rpcdce.h:373:5 */
type PRPC_HTTP_TRANSPORT_CREDENTIALS_W = uintptr                          /* rpcdce.h:373:38 */

type _RPC_HTTP_TRANSPORT_CREDENTIALS_A = struct {
	TransportCredentials     uintptr
	Flags                    uint32
	AuthenticationTarget     uint32
	NumberOfAuthnSchemes     uint32
	AuthnSchemes             uintptr
	ServerCertificateSubject uintptr
} /* rpcdce.h:375:11 */

type RPC_HTTP_TRANSPORT_CREDENTIALS_A = _RPC_HTTP_TRANSPORT_CREDENTIALS_A /* rpcdce.h:382:5 */
type PRPC_HTTP_TRANSPORT_CREDENTIALS_A = uintptr                          /* rpcdce.h:382:38 */

type _RPC_SECURITY_QOS_V2_W = struct {
	Version                    uint32
	Capabilities               uint32
	IdentityTracking           uint32
	ImpersonationType          uint32
	AdditionalSecurityInfoType uint32
	u                          struct{ HttpCredentials uintptr }
} /* rpcdce.h:384:11 */

type RPC_SECURITY_QOS_V2_W = _RPC_SECURITY_QOS_V2_W /* rpcdce.h:393:5 */
type PRPC_SECURITY_QOS_V2_W = uintptr               /* rpcdce.h:393:27 */

type _RPC_SECURITY_QOS_V2_A = struct {
	Version                    uint32
	Capabilities               uint32
	IdentityTracking           uint32
	ImpersonationType          uint32
	AdditionalSecurityInfoType uint32
	u                          struct{ HttpCredentials uintptr }
} /* rpcdce.h:395:11 */

type RPC_SECURITY_QOS_V2_A = _RPC_SECURITY_QOS_V2_A /* rpcdce.h:404:5 */
type PRPC_SECURITY_QOS_V2_A = uintptr               /* rpcdce.h:404:27 */

type _RPC_SECURITY_QOS_V3_W = struct {
	Version                    uint32
	Capabilities               uint32
	IdentityTracking           uint32
	ImpersonationType          uint32
	AdditionalSecurityInfoType uint32
	u                          struct{ HttpCredentials uintptr }
	Sid                        uintptr
} /* rpcdce.h:408:11 */

type RPC_SECURITY_QOS_V3_W = _RPC_SECURITY_QOS_V3_W /* rpcdce.h:418:5 */
type PRPC_SECURITY_QOS_V3_W = uintptr               /* rpcdce.h:418:27 */

type _RPC_SECURITY_QOS_V3_A = struct {
	Version                    uint32
	Capabilities               uint32
	IdentityTracking           uint32
	ImpersonationType          uint32
	AdditionalSecurityInfoType uint32
	u                          struct{ HttpCredentials uintptr }
	Sid                        uintptr
} /* rpcdce.h:420:11 */

type RPC_SECURITY_QOS_V3_A = _RPC_SECURITY_QOS_V3_A /* rpcdce.h:430:5 */
type PRPC_SECURITY_QOS_V3_A = uintptr               /* rpcdce.h:430:27 */

type RPC_HTTP_REDIRECTOR_STAGE = uint32 /* rpcdce.h:445:5 */

type RPC_NEW_HTTP_PROXY_CHANNEL = uintptr /* rpcdce.h:447:22 */
type RPC_HTTP_PROXY_FREE_STRING = uintptr /* rpcdce.h:448:16 */

type RPC_AUTH_KEY_RETRIEVAL_FN = uintptr /* rpcdce.h:471:16 */

type RPC_CLIENT_INFORMATION1 = struct {
	UserName     uintptr
	ComputerName uintptr
	Privilege    uint16
	_            [2]byte
	AuthFlags    uint32
}                                       /* rpcdce.h:490:5 */
type PRPC_CLIENT_INFORMATION1 = uintptr /* rpcdce.h:490:29 */

type RPC_EP_INQ_HANDLE = uintptr /* rpcdce.h:526:24 */

type RPC_MGMT_AUTHORIZATION_FN = uintptr /* rpcdce.h:547:15 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type _RPC_VERSION = struct {
	MajorVersion uint16
	MinorVersion uint16
} /* rpcdcep.h:15:11 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RPC_VERSION = _RPC_VERSION /* rpcdcep.h:18:5 */

type _RPC_SYNTAX_IDENTIFIER = struct {
	SyntaxGUID    GUID
	SyntaxVersion RPC_VERSION
} /* rpcdcep.h:20:11 */

type RPC_SYNTAX_IDENTIFIER = _RPC_SYNTAX_IDENTIFIER /* rpcdcep.h:23:5 */
type PRPC_SYNTAX_IDENTIFIER = uintptr               /* rpcdcep.h:23:27 */

type _RPC_MESSAGE = struct {
	Handle                  RPC_BINDING_HANDLE
	DataRepresentation      uint32
	Buffer                  uintptr
	BufferLength            uint32
	ProcNum                 uint32
	TransferSyntax          PRPC_SYNTAX_IDENTIFIER
	RpcInterfaceInformation uintptr
	ReservedForRuntime      uintptr
	ManagerEpv              uintptr
	ImportContext           uintptr
	RpcFlags                uint32
} /* rpcdcep.h:25:11 */

type RPC_MESSAGE = _RPC_MESSAGE /* rpcdcep.h:37:5 */
type PRPC_MESSAGE = uintptr     /* rpcdcep.h:37:17 */

type RPC_DISPATCH_FUNCTION = uintptr /* rpcdcep.h:77:16 */

type RPC_DISPATCH_TABLE = struct {
	DispatchTableCount uint32
	DispatchTable      uintptr
	Reserved           LONG_PTR
}                                  /* rpcdcep.h:83:5 */
type PRPC_DISPATCH_TABLE = uintptr /* rpcdcep.h:83:24 */

type _RPC_PROTSEQ_ENDPOINT = struct {
	RpcProtocolSequence uintptr
	Endpoint            uintptr
} /* rpcdcep.h:85:11 */

type RPC_PROTSEQ_ENDPOINT = _RPC_PROTSEQ_ENDPOINT /* rpcdcep.h:88:5 */
type PRPC_PROTSEQ_ENDPOINT = uintptr              /* rpcdcep.h:88:26 */

type _RPC_SERVER_INTERFACE = struct {
	Length                  uint32
	InterfaceId             RPC_SYNTAX_IDENTIFIER
	TransferSyntax          RPC_SYNTAX_IDENTIFIER
	DispatchTable           PRPC_DISPATCH_TABLE
	RpcProtseqEndpointCount uint32
	RpcProtseqEndpoint      PRPC_PROTSEQ_ENDPOINT
	DefaultManagerEpv       uintptr
	InterpreterInfo         uintptr
	Flags                   uint32
} /* rpcdcep.h:93:11 */

type RPC_SERVER_INTERFACE = _RPC_SERVER_INTERFACE /* rpcdcep.h:103:5 */
type PRPC_SERVER_INTERFACE = uintptr              /* rpcdcep.h:103:26 */

type _RPC_CLIENT_INTERFACE = struct {
	Length                  uint32
	InterfaceId             RPC_SYNTAX_IDENTIFIER
	TransferSyntax          RPC_SYNTAX_IDENTIFIER
	DispatchTable           PRPC_DISPATCH_TABLE
	RpcProtseqEndpointCount uint32
	RpcProtseqEndpoint      PRPC_PROTSEQ_ENDPOINT
	Reserved                ULONG_PTR
	InterpreterInfo         uintptr
	Flags                   uint32
} /* rpcdcep.h:105:11 */

type RPC_CLIENT_INTERFACE = _RPC_CLIENT_INTERFACE /* rpcdcep.h:115:5 */
type PRPC_CLIENT_INTERFACE = uintptr              /* rpcdcep.h:115:26 */

type I_RPC_MUTEX = uintptr /* rpcdcep.h:127:16 */

type PRPC_RUNDOWN = uintptr /* rpcdcep.h:142:16 */

type _RPC_TRANSFER_SYNTAX = struct {
	Uuid      UUID
	VersMajor uint16
	VersMinor uint16
} /* rpcdcep.h:175:11 */

type RPC_TRANSFER_SYNTAX = _RPC_TRANSFER_SYNTAX /* rpcdcep.h:179:5 */

type RPCLT_PDU_FILTER_FUNC = uintptr /* rpcdcep.h:201:16 */
type RPC_SETFILTER_FUNC = uintptr    /* rpcdcep.h:202:16 */

type _RPC_C_OPT_METADATA_DESCRIPTOR = struct {
	BufferSize uint32
	Buffer     uintptr
} /* rpcdcep.h:222:11 */

type RPC_C_OPT_METADATA_DESCRIPTOR = _RPC_C_OPT_METADATA_DESCRIPTOR /* rpcdcep.h:225:5 */

type _RDR_CALLOUT_STATE = struct {
	LastError           RPC_STATUS
	LastEEInfo          uintptr
	LastCalledStage     RPC_HTTP_REDIRECTOR_STAGE
	ServerName          uintptr
	ServerPort          uintptr
	RemoteUser          uintptr
	AuthType            uintptr
	ResourceTypePresent uint8
	MetadataPresent     uint8
	SessionIdPresent    uint8
	InterfacePresent    uint8
	ResourceType        UUID
	Metadata            RPC_C_OPT_METADATA_DESCRIPTOR
	SessionId           UUID
	Interface           RPC_SYNTAX_IDENTIFIER
	CertContext         uintptr
} /* rpcdcep.h:227:11 */

type RDR_CALLOUT_STATE = _RDR_CALLOUT_STATE /* rpcdcep.h:244:5 */

type I_RpcProxyIsValidMachineFn = uintptr       /* rpcdcep.h:246:22 */
type I_RpcProxyGetClientAddressFn = uintptr     /* rpcdcep.h:247:22 */
type I_RpcProxyGetConnectionTimeoutFn = uintptr /* rpcdcep.h:248:22 */
type I_RpcPerformCalloutFn = uintptr            /* rpcdcep.h:249:22 */
type I_RpcFreeCalloutStateFn = uintptr          /* rpcdcep.h:250:16 */

type tagI_RpcProxyCallbackInterface = struct {
	IsValidMachineFn       I_RpcProxyIsValidMachineFn
	GetClientAddressFn     I_RpcProxyGetClientAddressFn
	GetConnectionTimeoutFn I_RpcProxyGetConnectionTimeoutFn
	PerformCalloutFn       I_RpcPerformCalloutFn
	FreeCalloutStateFn     I_RpcFreeCalloutStateFn
} /* rpcdcep.h:252:11 */

type I_RpcProxyCallbackInterface = tagI_RpcProxyCallbackInterface /* rpcdcep.h:258:5 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RPC_NS_HANDLE = uintptr /* rpcnsi.h:11:14 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// TODO:  This isn't actual working on gcc.  Either we need to implement
//    their __try/__except/__finally feature, or we need to do at least for x64
//    emulation-code via inline-assembler ...

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RPC_NOTIFICATION_TYPES = uint32 /* rpcasync.h:23:5 */

type RPC_ASYNC_EVENT = uint32 /* rpcasync.h:27:5 */

type _RPC_ASYNC_STATE = struct {
	Size             uint32
	Signature        uint32
	Lock             int32
	Flags            uint32
	StubInfo         uintptr
	UserInfo         uintptr
	RuntimeInfo      uintptr
	Event            RPC_ASYNC_EVENT
	NotificationType RPC_NOTIFICATION_TYPES
	u                struct {
		APC struct {
			NotificationRoutine PFN_RPCNOTIFICATION_ROUTINE
			hThread             HANDLE
		}
		_ [8]byte
	}
	Reserved [4]LONG_PTR
} /* rpcasync.h:29:3 */

type PFN_RPCNOTIFICATION_ROUTINE = uintptr /* rpcasync.h:32:35 */

type RPC_ASYNC_STATE = _RPC_ASYNC_STATE /* rpcasync.h:63:5 */
type PRPC_ASYNC_STATE = uintptr         /* rpcasync.h:63:21 */

type ExtendedErrorParamTypes = uint32 /* rpcasync.h:80:5 */

type tagBinaryParam = struct {
	Buffer uintptr
	Size   int16
	_      [2]byte
} /* rpcasync.h:85:11 */

type BinaryParam = tagBinaryParam /* rpcasync.h:88:5 */

type tagRPC_EE_INFO_PARAM = struct {
	ParameterType ExtendedErrorParamTypes
	_             [4]byte
	u             struct {
		_          [0]uint64
		AnsiString LPSTR
		_          [4]byte
	}
} /* rpcasync.h:90:11 */

type RPC_EE_INFO_PARAM = tagRPC_EE_INFO_PARAM /* rpcasync.h:100:5 */

type tagRPC_EXTENDED_ERROR_INFO = struct {
	Version      ULONG
	ComputerName LPWSTR
	ProcessID    ULONG
	u            struct {
		_          [0]uint32
		SystemTime SYSTEMTIME
	}
	GeneratingComponent ULONG
	Status              ULONG
	DetectionLocation   USHORT
	Flags               USHORT
	NumberOfParameters  int32
	_                   [4]byte
	Parameters          [4]RPC_EE_INFO_PARAM
} /* rpcasync.h:109:11 */

type RPC_EXTENDED_ERROR_INFO = tagRPC_EXTENDED_ERROR_INFO /* rpcasync.h:123:5 */

type tagRPC_ERROR_ENUM_HANDLE = struct {
	Signature  ULONG
	CurrentPos uintptr
	Head       uintptr
} /* rpcasync.h:125:11 */

type RPC_ERROR_ENUM_HANDLE = tagRPC_ERROR_ENUM_HANDLE /* rpcasync.h:129:5 */

type tagRPC_CALL_ATTRIBUTES_V1_W = struct {
	Version                         uint32
	Flags                           uint32
	ServerPrincipalNameBufferLength uint32
	ServerPrincipalName             uintptr
	ClientPrincipalNameBufferLength uint32
	ClientPrincipalName             uintptr
	AuthenticationLevel             uint32
	AuthenticationService           uint32
	NullSession                     WINBOOL
} /* rpcasync.h:149:11 */

type RPC_CALL_ATTRIBUTES_V1_W = tagRPC_CALL_ATTRIBUTES_V1_W /* rpcasync.h:159:5 */

type tagRPC_CALL_ATTRIBUTES_V1_A = struct {
	Version                         uint32
	Flags                           uint32
	ServerPrincipalNameBufferLength uint32
	ServerPrincipalName             uintptr
	ClientPrincipalNameBufferLength uint32
	ClientPrincipalName             uintptr
	AuthenticationLevel             uint32
	AuthenticationService           uint32
	NullSession                     WINBOOL
} /* rpcasync.h:161:11 */

type RPC_CALL_ATTRIBUTES_V1_A = tagRPC_CALL_ATTRIBUTES_V1_A /* rpcasync.h:171:5 */

type RPC_CALL_ATTRIBUTES = RPC_CALL_ATTRIBUTES_V1_W /* rpcasync.h:179:34 */

type _RPC_ASYNC_NOTIFICATION_INFO = struct {
	APC struct {
		NotificationRoutine PFN_RPCNOTIFICATION_ROUTINE
		hThread             HANDLE
	}
	_ [8]byte
} /* rpcasync.h:185:9 */

type RPC_ASYNC_NOTIFICATION_INFO = _RPC_ASYNC_NOTIFICATION_INFO /* rpcasync.h:202:3 */
type PRPC_ASYNC_NOTIFICATION_INFO = uintptr                     /* rpcasync.h:202:32 */

type RpcCallType = uint32 /* rpcasync.h:219:3 */

type RpcLocalAddressFormat = uint32 /* rpcasync.h:225:3 */

type RPC_NOTIFICATIONS = uint32 /* rpcasync.h:231:3 */

type RpcCallClientLocality = uint32 /* rpcasync.h:238:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type RPC_IMPORT_CONTEXT_P = struct {
	LookupContext  RPC_NS_HANDLE
	ProposedHandle RPC_BINDING_HANDLE
	Bindings       uintptr
}                                    /* rpcnsip.h:17:5 */
type PRPC_IMPORT_CONTEXT_P = uintptr /* rpcnsip.h:17:26 */

// Copyright (C) 2011 Francois Gouget
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA

type byte = uint8    /* rpcndr.h:63:25 */
type cs_byte = byte  /* rpcndr.h:64:16 */
type boolean = uint8 /* rpcndr.h:65:25 */

type NDR_CCONTEXT = uintptr /* rpcndr.h:128:16 */

type _NDR_SCONTEXT = struct {
	pad         [2]uintptr
	userContext uintptr
} /* rpcndr.h:130:11 */

type NDR_SCONTEXT = uintptr /* rpcndr.h:133:5 */

type NDR_RUNDOWN = uintptr         /* rpcndr.h:139:16 */
type NDR_NOTIFY_ROUTINE = uintptr  /* rpcndr.h:140:16 */
type NDR_NOTIFY2_ROUTINE = uintptr /* rpcndr.h:141:16 */

type _SCONTEXT_QUEUE = struct {
	NumberOfObjects uint32
	ArrayOfObjects  uintptr
} /* rpcndr.h:143:11 */

type SCONTEXT_QUEUE = _SCONTEXT_QUEUE /* rpcndr.h:146:5 */
type PSCONTEXT_QUEUE = uintptr        /* rpcndr.h:146:20 */

type error_status_t = uint32 /* rpcndr.h:173:27 */

type _MIDL_STUB_MESSAGE = struct {
	RpcMsg                 PRPC_MESSAGE
	Buffer                 uintptr
	BufferStart            uintptr
	BufferEnd              uintptr
	BufferMark             uintptr
	BufferLength           uint32
	MemorySize             uint32
	Memory                 uintptr
	IsClient               uint8
	Pad                    uint8
	uFlags2                uint16
	ReuseBuffer            int32
	pAllocAllNodesContext  uintptr
	pPointerQueueState     uintptr
	IgnoreEmbeddedPointers int32
	PointerBufferMark      uintptr
	fBufferValid           uint8
	uFlags                 uint8
	UniquePtrCount         uint16
	MaxCount               ULONG_PTR
	Offset                 uint32
	ActualCount            uint32
	pfnAllocate            uintptr
	pfnFree                uintptr
	StackTop               uintptr
	pPresentedType         uintptr
	pTransmitType          uintptr
	SavedHandle            handle_t
	StubDesc               uintptr
	FullPtrXlatTables      uintptr
	FullPtrRefId           uint32
	PointerLength          uint32
	fInDontFree            uint32 /* int fInDontFree: 1, int fDontCallFreeInst: 1, int fInOnlyParam: 1, int fHasReturn: 1, int fHasExtensions: 1, int fHasNewCorrDesc: 1, int fIsOicfServer: 1, int fHasMemoryValidateCallback: 1, int fUnused: 8, int fUnused2: 16 */
	dwDestContext          uint32
	pvDestContext          uintptr
	SavedContextHandles    uintptr
	ParamNumber            int32
	pRpcChannelBuffer      uintptr
	pArrayInfo             PARRAY_INFO
	SizePtrCountArray      uintptr
	SizePtrOffsetArray     uintptr
	SizePtrLengthArray     uintptr
	pArgQueue              uintptr
	dwStubPhase            uint32
	LowStackMark           uintptr
	pAsyncMsg              PNDR_ASYNC_MESSAGE
	pCorrInfo              PNDR_CORRELATION_INFO
	pCorrMemory            uintptr
	pMemoryList            uintptr
	pCSInfo                uintptr
	ConformanceMark        uintptr
	VarianceMark           uintptr
	Unused                 INT_PTR
	pContext               uintptr
	pUserMarshalList       uintptr
	Reserved51_2           INT_PTR
	Reserved51_3           INT_PTR
	Reserved51_4           INT_PTR
	Reserved51_5           INT_PTR
} /* rpcndr.h:211:3 */

type _MIDL_STUB_DESC = struct {
	RpcInterfaceInformation     uintptr
	pfnAllocate                 uintptr
	pfnFree                     uintptr
	IMPLICIT_HANDLE_INFO        struct{ pAutoHandle uintptr }
	apfnNdrRundownRoutines      uintptr
	aGenericBindingRoutinePairs uintptr
	apfnExprEval                uintptr
	aXmitQuintuple              uintptr
	pFormatTypes                uintptr
	fCheckBounds                int32
	Version                     uint32
	pMallocFreeStruct           uintptr
	MIDLVersion                 int32
	CommFaultOffsets            uintptr
	aUserMarshalQuadruple       uintptr
	NotifyRoutineTable          uintptr
	mFlags                      ULONG_PTR
	CsRoutineTables             uintptr
	Reserved4                   uintptr
	Reserved5                   ULONG_PTR
} /* rpcndr.h:211:3 */

type _FULL_PTR_XLAT_TABLES = struct {
	RefIdToPointer struct {
		XlatTable       uintptr
		StateTable      uintptr
		NumberOfEntries uint32
	}
	PointerToRefId struct {
		XlatTable       uintptr
		NumberOfBuckets uint32
		HashMask        uint32
	}
	NextRefId uint32
	XlatSide  XLAT_SIDE
} /* rpcndr.h:211:3 */

type RPC_BUFPTR = uintptr     /* rpcndr.h:215:25 */
type RPC_LENGTH = uint32      /* rpcndr.h:216:29 */
type EXPR_EVAL = uintptr      /* rpcndr.h:217:16 */
type PFORMAT_STRING = uintptr /* rpcndr.h:218:31 */

type ARRAY_INFO = struct {
	Dimension             int32
	BufferConformanceMark uintptr
	BufferVarianceMark    uintptr
	MaxCountArray         uintptr
	OffsetArray           uintptr
	ActualCountArray      uintptr
}                          /* rpcndr.h:227:5 */
type PARRAY_INFO = uintptr /* rpcndr.h:227:16 */

type PNDR_ASYNC_MESSAGE = uintptr    /* rpcndr.h:229:37 */
type PNDR_CORRELATION_INFO = uintptr /* rpcndr.h:230:40 */

type CS_STUB_INFO = struct {
	WireCodeset             uint32
	DesiredReceivingCodeset uint32
	CSArrayInfo             uintptr
} /* rpcndr.h:236:5 */

type _MIDL_SYNTAX_INFO = struct {
	TransferSyntax        RPC_SYNTAX_IDENTIFIER
	DispatchTable         uintptr
	ProcString            PFORMAT_STRING
	FmtStringOffset       uintptr
	TypeString            PFORMAT_STRING
	aUserMarshalQuadruple uintptr
	pReserved1            ULONG_PTR
	pReserved2            ULONG_PTR
} /* rpcndr.h:238:3 */

type MIDL_SYNTAX_INFO = _MIDL_SYNTAX_INFO /* rpcndr.h:239:36 */
type PMIDL_SYNTAX_INFO = uintptr          /* rpcndr.h:239:53 */

type IRpcChannelBuffer1 = struct{ lpVtbl uintptr } /* rpcndr.h:211:3 */

type MIDL_STUB_MESSAGE = _MIDL_STUB_MESSAGE /* rpcndr.h:318:5 */
type PMIDL_STUB_MESSAGE = uintptr           /* rpcndr.h:318:23 */

type GENERIC_BINDING_ROUTINE = uintptr /* rpcndr.h:320:16 */
type GENERIC_UNBIND_ROUTINE = uintptr  /* rpcndr.h:321:16 */

type _GENERIC_BINDING_ROUTINE_PAIR = struct {
	pfnBind   GENERIC_BINDING_ROUTINE
	pfnUnbind GENERIC_UNBIND_ROUTINE
} /* rpcndr.h:211:3 */

type GENERIC_BINDING_ROUTINE_PAIR = _GENERIC_BINDING_ROUTINE_PAIR /* rpcndr.h:326:5 */
type PGENERIC_BINDING_ROUTINE_PAIR = uintptr                      /* rpcndr.h:326:34 */

type __GENERIC_BINDING_INFO = struct {
	pObj      uintptr
	Size      uint32
	pfnBind   GENERIC_BINDING_ROUTINE
	pfnUnbind GENERIC_UNBIND_ROUTINE
} /* rpcndr.h:328:11 */

type GENERIC_BINDING_INFO = __GENERIC_BINDING_INFO /* rpcndr.h:333:5 */
type PGENERIC_BINDING_INFO = uintptr               /* rpcndr.h:333:26 */

type XMIT_HELPER_ROUTINE = uintptr /* rpcndr.h:337:16 */

type _XMIT_ROUTINE_QUINTUPLE = struct {
	pfnTranslateToXmit   XMIT_HELPER_ROUTINE
	pfnTranslateFromXmit XMIT_HELPER_ROUTINE
	pfnFreeXmit          XMIT_HELPER_ROUTINE
	pfnFreeInst          XMIT_HELPER_ROUTINE
} /* rpcndr.h:211:3 */

type XMIT_ROUTINE_QUINTUPLE = _XMIT_ROUTINE_QUINTUPLE /* rpcndr.h:344:5 */
type PXMIT_ROUTINE_QUINTUPLE = uintptr                /* rpcndr.h:344:28 */

type USER_MARSHAL_SIZING_ROUTINE = uintptr        /* rpcndr.h:346:17 */
type USER_MARSHAL_MARSHALLING_ROUTINE = uintptr   /* rpcndr.h:347:25 */
type USER_MARSHAL_UNMARSHALLING_ROUTINE = uintptr /* rpcndr.h:348:25 */
type USER_MARSHAL_FREEING_ROUTINE = uintptr       /* rpcndr.h:349:16 */

type _USER_MARSHAL_ROUTINE_QUADRUPLE = struct {
	pfnBufferSize USER_MARSHAL_SIZING_ROUTINE
	pfnMarshall   USER_MARSHAL_MARSHALLING_ROUTINE
	pfnUnmarshall USER_MARSHAL_UNMARSHALLING_ROUTINE
	pfnFree       USER_MARSHAL_FREEING_ROUTINE
} /* rpcndr.h:211:3 */

type USER_MARSHAL_ROUTINE_QUADRUPLE = _USER_MARSHAL_ROUTINE_QUADRUPLE /* rpcndr.h:356:5 */

type USER_MARSHAL_CB_TYPE = uint32 /* rpcndr.h:362:5 */

type _USER_MARSHAL_CB = struct {
	Flags       uint32
	pStubMsg    PMIDL_STUB_MESSAGE
	pReserve    PFORMAT_STRING
	Signature   uint32
	CBType      USER_MARSHAL_CB_TYPE
	pFormat     PFORMAT_STRING
	pTypeFormat PFORMAT_STRING
} /* rpcndr.h:364:11 */

type USER_MARSHAL_CB = _USER_MARSHAL_CB /* rpcndr.h:372:5 */

type _MALLOC_FREE_STRUCT = struct {
	pfnAllocate uintptr
	pfnFree     uintptr
} /* rpcndr.h:211:3 */

type MALLOC_FREE_STRUCT = _MALLOC_FREE_STRUCT /* rpcndr.h:384:5 */

type _COMM_FAULT_OFFSETS = struct {
	CommOffset  int16
	FaultOffset int16
} /* rpcndr.h:211:3 */

type COMM_FAULT_OFFSETS = _COMM_FAULT_OFFSETS /* rpcndr.h:389:5 */

type IDL_CS_CONVERT = uint32 /* rpcndr.h:393:5 */

type CS_TYPE_NET_SIZE_ROUTINE = uintptr   /* rpcndr.h:395:16 */
type CS_TYPE_LOCAL_SIZE_ROUTINE = uintptr /* rpcndr.h:396:16 */
type CS_TYPE_TO_NETCS_ROUTINE = uintptr   /* rpcndr.h:397:16 */
type CS_TYPE_FROM_NETCS_ROUTINE = uintptr /* rpcndr.h:398:16 */
type CS_TAG_GETTING_ROUTINE = uintptr     /* rpcndr.h:399:16 */

type _NDR_CS_SIZE_CONVERT_ROUTINES = struct {
	pfnNetSize   CS_TYPE_NET_SIZE_ROUTINE
	pfnToNetCs   CS_TYPE_TO_NETCS_ROUTINE
	pfnLocalSize CS_TYPE_LOCAL_SIZE_ROUTINE
	pfnFromNetCs CS_TYPE_FROM_NETCS_ROUTINE
} /* rpcndr.h:211:3 */

type NDR_CS_SIZE_CONVERT_ROUTINES = _NDR_CS_SIZE_CONVERT_ROUTINES /* rpcndr.h:408:5 */

type _NDR_CS_ROUTINES = struct {
	pSizeConvertRoutines uintptr
	pTagGettingRoutines  uintptr
} /* rpcndr.h:211:3 */

type NDR_CS_ROUTINES = _NDR_CS_ROUTINES /* rpcndr.h:413:5 */

type MIDL_STUB_DESC = _MIDL_STUB_DESC /* rpcndr.h:440:5 */

type PMIDL_STUB_DESC = uintptr /* rpcndr.h:442:32 */
type PMIDL_XMIT_TYPE = uintptr /* rpcndr.h:443:16 */

type _MIDL_FORMAT_STRING = struct {
	_   [0]uint16
	Pad int16
} /* rpcndr.h:445:11 */

type MIDL_FORMAT_STRING = _MIDL_FORMAT_STRING /* rpcndr.h:448:5 */

type STUB_THUNK = uintptr     /* rpcndr.h:450:16 */
type SERVER_ROUTINE = uintptr /* rpcndr.h:451:20 */

type _MIDL_SERVER_INFO_ = struct {
	pStubDesc       PMIDL_STUB_DESC
	DispatchTable   uintptr
	ProcString      PFORMAT_STRING
	FmtStringOffset uintptr
	ThunkTable      uintptr
	pTransferSyntax PRPC_SYNTAX_IDENTIFIER
	nCount          ULONG_PTR
	pSyntaxInfo     PMIDL_SYNTAX_INFO
} /* rpcndr.h:453:11 */

type MIDL_SERVER_INFO = _MIDL_SERVER_INFO_ /* rpcndr.h:462:5 */
type PMIDL_SERVER_INFO = uintptr           /* rpcndr.h:462:22 */

type _MIDL_STUBLESS_PROXY_INFO = struct {
	pStubDesc          PMIDL_STUB_DESC
	ProcFormatString   PFORMAT_STRING
	FormatStringOffset uintptr
	pTransferSyntax    PRPC_SYNTAX_IDENTIFIER
	nCount             ULONG_PTR
	pSyntaxInfo        PMIDL_SYNTAX_INFO
} /* rpcndr.h:466:11 */

type MIDL_STUBLESS_PROXY_INFO = _MIDL_STUBLESS_PROXY_INFO /* rpcndr.h:473:5 */

type PMIDL_STUBLESS_PROXY_INFO = uintptr /* rpcndr.h:475:36 */

type PARAM_OFFSETTABLE = uintptr  /* rpcndr.h:488:26 */
type PPARAM_OFFSETTABLE = uintptr /* rpcndr.h:488:45 */

type _CLIENT_CALL_RETURN = struct{ Pointer uintptr } /* rpcndr.h:490:11 */

type CLIENT_CALL_RETURN = _CLIENT_CALL_RETURN /* rpcndr.h:493:5 */

type XLAT_SIDE = uint32 /* rpcndr.h:497:5 */

type _FULL_PTR_TO_REFID_ELEMENT = struct {
	Next    uintptr
	Pointer uintptr
	RefId   uint32
	State   uint8
	_       [3]byte
} /* rpcndr.h:499:11 */

type FULL_PTR_TO_REFID_ELEMENT = _FULL_PTR_TO_REFID_ELEMENT /* rpcndr.h:504:5 */
type PFULL_PTR_TO_REFID_ELEMENT = uintptr                   /* rpcndr.h:504:31 */

type FULL_PTR_XLAT_TABLES = _FULL_PTR_XLAT_TABLES /* rpcndr.h:520:5 */
type PFULL_PTR_XLAT_TABLES = uintptr              /* rpcndr.h:520:26 */

type STUB_PHASE = uint32 /* rpcndr.h:674:5 */

type PROXY_PHASE = uint32 /* rpcndr.h:678:5 */

type IRpcStubBuffer1 = struct{ lpVtbl uintptr } /* rpcndr.h:680:3 */

type RPC_SS_THREAD_HANDLE = uintptr /* rpcndr.h:705:16 */

type _NDR_USER_MARSHAL_INFO_LEVEL1 = struct {
	Buffer            uintptr
	BufferSize        uint32
	pfnAllocate       uintptr
	pfnFree           uintptr
	pRpcChannelBuffer uintptr
	Reserved          [5]ULONG_PTR
} /* rpcndr.h:763:11 */

type NDR_USER_MARSHAL_INFO_LEVEL1 = _NDR_USER_MARSHAL_INFO_LEVEL1 /* rpcndr.h:770:5 */

type _NDR_USER_MARSHAL_INFO = struct {
	InformationLevel uint32
	__4              struct{ Level1 NDR_USER_MARSHAL_INFO_LEVEL1 }
} /* rpcndr.h:772:11 */

type NDR_USER_MARSHAL_INFO = _NDR_USER_MARSHAL_INFO /* rpcndr.h:777:5 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type REGCLS = uint32 /* combaseapi.h:144:3 */

type IRpcStubBuffer = IRpcStubBuffer1       /* combaseapi.h:146:34 */
type IRpcChannelBuffer = IRpcChannelBuffer1 /* combaseapi.h:147:37 */

type COINITBASE = uint32 /* combaseapi.h:151:3 */

type OLECHAR = WCHAR     /* wtypesbase.h:68:15 */
type LPOLESTR = uintptr  /* wtypesbase.h:69:17 */
type LPCOLESTR = uintptr /* wtypesbase.h:70:23 */
type DOUBLE = float64    /* wtypesbase.h:93:16 */

type _COAUTHIDENTITY = struct {
	User           uintptr
	UserLength     ULONG
	Domain         uintptr
	DomainLength   ULONG
	Password       uintptr
	PasswordLength ULONG
	Flags          ULONG
} /* wtypesbase.h:184:9 */

type COAUTHIDENTITY = _COAUTHIDENTITY /* wtypesbase.h:192:3 */

type _COAUTHINFO = struct {
	dwAuthnSvc           DWORD
	dwAuthzSvc           DWORD
	pwszServerPrincName  LPWSTR
	dwAuthnLevel         DWORD
	dwImpersonationLevel DWORD
	pAuthIdentityData    uintptr
	dwCapabilities       DWORD
} /* wtypesbase.h:194:9 */

type COAUTHINFO = _COAUTHINFO /* wtypesbase.h:202:3 */

type SCODE = LONG     /* wtypesbase.h:204:14 */
type PSCODE = uintptr /* wtypesbase.h:205:15 */

type MEMCTX = int32 /* wtypesbase.h:238:3 */

type CLSCTX = int32 /* wtypesbase.h:293:3 */

type MSHLFLAGS = uint32 /* wtypesbase.h:306:3 */

type MSHCTX = uint32 /* wtypesbase.h:314:3 */

type _BYTE_BLOB = struct {
	clSize ULONG
	abData [1]byte
	_      [3]byte
} /* wtypesbase.h:316:9 */

type BYTE_BLOB = _BYTE_BLOB /* wtypesbase.h:319:3 */

type UP_BYTE_BLOB = uintptr /* wtypesbase.h:321:19 */

type _WORD_BLOB = struct {
	clSize ULONG
	asData [1]uint16
	_      [2]byte
} /* wtypesbase.h:323:9 */

type WORD_BLOB = _WORD_BLOB /* wtypesbase.h:326:3 */

type UP_WORD_BLOB = uintptr /* wtypesbase.h:328:19 */

type _DWORD_BLOB = struct {
	clSize ULONG
	alData [1]ULONG
} /* wtypesbase.h:330:9 */

type DWORD_BLOB = _DWORD_BLOB /* wtypesbase.h:333:3 */

type UP_DWORD_BLOB = uintptr /* wtypesbase.h:335:20 */

type _FLAGGED_BYTE_BLOB = struct {
	fFlags ULONG
	clSize ULONG
	abData [1]byte
	_      [3]byte
} /* wtypesbase.h:337:9 */

type FLAGGED_BYTE_BLOB = _FLAGGED_BYTE_BLOB /* wtypesbase.h:341:3 */

type UP_FLAGGED_BYTE_BLOB = uintptr /* wtypesbase.h:343:27 */

type _FLAGGED_WORD_BLOB = struct {
	fFlags ULONG
	clSize ULONG
	asData [1]uint16
	_      [2]byte
} /* wtypesbase.h:345:9 */

type FLAGGED_WORD_BLOB = _FLAGGED_WORD_BLOB /* wtypesbase.h:349:3 */

type UP_FLAGGED_WORD_BLOB = uintptr /* wtypesbase.h:351:27 */

type _BYTE_SIZEDARR = struct {
	clSize ULONG
	pData  uintptr
} /* wtypesbase.h:353:9 */

type BYTE_SIZEDARR = _BYTE_SIZEDARR /* wtypesbase.h:356:3 */

type _SHORT_SIZEDARR = struct {
	clSize ULONG
	pData  uintptr
} /* wtypesbase.h:358:9 */

type WORD_SIZEDARR = _SHORT_SIZEDARR /* wtypesbase.h:361:3 */

type _LONG_SIZEDARR = struct {
	clSize ULONG
	pData  uintptr
} /* wtypesbase.h:363:9 */

type DWORD_SIZEDARR = _LONG_SIZEDARR /* wtypesbase.h:366:3 */

type _HYPER_SIZEDARR = struct {
	clSize ULONG
	pData  uintptr
} /* wtypesbase.h:368:9 */

type HYPER_SIZEDARR = _HYPER_SIZEDARR /* wtypesbase.h:371:3 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/unknwnbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IUnknown1 = struct{ lpVtbl uintptr } /* unknwnbase.h:22:9 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/unknwnbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IUnknown = IUnknown1 /* unknwnbase.h:22:28 */

type AsyncIUnknown1 = struct{ lpVtbl uintptr } /* unknwnbase.h:27:9 */

type AsyncIUnknown = AsyncIUnknown1 /* unknwnbase.h:27:33 */

type IClassFactory1 = struct{ lpVtbl uintptr } /* unknwnbase.h:32:9 */

type IClassFactory = IClassFactory1 /* unknwnbase.h:32:33 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/wtypesbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// ****************************************************************************
//
// IUnknown interface

type LPUNKNOWN = uintptr /* unknwnbase.h:58:18 */
type IUnknownVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
} /* unknwnbase.h:22:9 */

type IUnknownVtbl = IUnknownVtbl1 /* unknwnbase.h:126:3 */
type AsyncIUnknownVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	Begin_QueryInterface  uintptr
	Finish_QueryInterface uintptr
	Begin_AddRef          uintptr
	Finish_AddRef         uintptr
	Begin_Release         uintptr
	Finish_Release        uintptr
} /* unknwnbase.h:27:9 */

type AsyncIUnknownVtbl = AsyncIUnknownVtbl1 /* unknwnbase.h:254:3 */

// ****************************************************************************
//
// IClassFactory interface

type LPCLASSFACTORY = uintptr /* unknwnbase.h:363:23 */
type IClassFactoryVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	CreateInstance uintptr
	LockServer     uintptr
} /* unknwnbase.h:32:9 */

type IClassFactoryVtbl = IClassFactoryVtbl1 /* unknwnbase.h:410:3 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/objidlbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IMarshal1 = struct{ lpVtbl uintptr } /* objidlbase.h:22:9 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/objidlbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IMarshal = IMarshal1 /* objidlbase.h:22:28 */

type INoMarshal1 = struct{ lpVtbl uintptr } /* objidlbase.h:27:9 */

type INoMarshal = INoMarshal1 /* objidlbase.h:27:30 */

type IAgileObject1 = struct{ lpVtbl uintptr } /* objidlbase.h:32:9 */

type IAgileObject = IAgileObject1 /* objidlbase.h:32:32 */

type IAgileReference1 = struct{ lpVtbl uintptr } /* objidlbase.h:37:9 */

type IAgileReference = IAgileReference1 /* objidlbase.h:37:35 */

type IMarshal21 = struct{ lpVtbl uintptr } /* objidlbase.h:42:9 */

type IMarshal2 = IMarshal21 /* objidlbase.h:42:29 */

type IMalloc1 = struct{ lpVtbl uintptr } /* objidlbase.h:47:9 */

type IMalloc = IMalloc1 /* objidlbase.h:47:27 */

type IStdMarshalInfo1 = struct{ lpVtbl uintptr } /* objidlbase.h:52:9 */

type IStdMarshalInfo = IStdMarshalInfo1 /* objidlbase.h:52:35 */

type IExternalConnection1 = struct{ lpVtbl uintptr } /* objidlbase.h:57:9 */

type IExternalConnection = IExternalConnection1 /* objidlbase.h:57:39 */

type IMultiQI1 = struct{ lpVtbl uintptr } /* objidlbase.h:62:9 */

type IMultiQI = IMultiQI1 /* objidlbase.h:62:28 */

type AsyncIMultiQI1 = struct{ lpVtbl uintptr } /* objidlbase.h:67:9 */

type AsyncIMultiQI = AsyncIMultiQI1 /* objidlbase.h:67:33 */

type IInternalUnknown1 = struct{ lpVtbl uintptr } /* objidlbase.h:72:9 */

type IInternalUnknown = IInternalUnknown1 /* objidlbase.h:72:36 */

type IEnumUnknown1 = struct{ lpVtbl uintptr } /* objidlbase.h:77:9 */

type IEnumUnknown = IEnumUnknown1 /* objidlbase.h:77:32 */

type IEnumString1 = struct{ lpVtbl uintptr } /* objidlbase.h:82:9 */

type IEnumString = IEnumString1 /* objidlbase.h:82:31 */

type ISequentialStream1 = struct{ lpVtbl uintptr } /* objidlbase.h:87:9 */

type ISequentialStream = ISequentialStream1 /* objidlbase.h:87:37 */

type IStream1 = struct{ lpVtbl uintptr } /* objidlbase.h:92:9 */

type IStream = IStream1 /* objidlbase.h:92:27 */

type IRpcChannelBuffer21 = struct{ lpVtbl uintptr } /* objidlbase.h:102:9 */

type IRpcChannelBuffer2 = IRpcChannelBuffer21 /* objidlbase.h:102:38 */

type IAsyncRpcChannelBuffer1 = struct{ lpVtbl uintptr } /* objidlbase.h:107:9 */

type IAsyncRpcChannelBuffer = IAsyncRpcChannelBuffer1 /* objidlbase.h:107:42 */

type IRpcChannelBuffer31 = struct{ lpVtbl uintptr } /* objidlbase.h:112:9 */

type IRpcChannelBuffer3 = IRpcChannelBuffer31 /* objidlbase.h:112:38 */

type IRpcSyntaxNegotiate1 = struct{ lpVtbl uintptr } /* objidlbase.h:117:9 */

type IRpcSyntaxNegotiate = IRpcSyntaxNegotiate1 /* objidlbase.h:117:39 */

type IRpcProxyBuffer1 = struct{ lpVtbl uintptr } /* objidlbase.h:122:9 */

type IRpcProxyBuffer = IRpcProxyBuffer1 /* objidlbase.h:122:35 */

type IPSFactoryBuffer1 = struct{ lpVtbl uintptr } /* objidlbase.h:132:9 */

type IPSFactoryBuffer = IPSFactoryBuffer1 /* objidlbase.h:132:36 */

type IChannelHook1 = struct{ lpVtbl uintptr } /* objidlbase.h:137:9 */

type IChannelHook = IChannelHook1 /* objidlbase.h:137:32 */

type IClientSecurity1 = struct{ lpVtbl uintptr } /* objidlbase.h:142:9 */

type IClientSecurity = IClientSecurity1 /* objidlbase.h:142:35 */

type IServerSecurity1 = struct{ lpVtbl uintptr } /* objidlbase.h:147:9 */

type IServerSecurity = IServerSecurity1 /* objidlbase.h:147:35 */

type IRpcOptions1 = struct{ lpVtbl uintptr } /* objidlbase.h:152:9 */

type IRpcOptions = IRpcOptions1 /* objidlbase.h:152:31 */

type IGlobalOptions1 = struct{ lpVtbl uintptr } /* objidlbase.h:157:9 */

type IGlobalOptions = IGlobalOptions1 /* objidlbase.h:157:34 */

type ISurrogate1 = struct{ lpVtbl uintptr } /* objidlbase.h:162:9 */

type ISurrogate = ISurrogate1 /* objidlbase.h:162:30 */

type IGlobalInterfaceTable1 = struct{ lpVtbl uintptr } /* objidlbase.h:167:9 */

type IGlobalInterfaceTable = IGlobalInterfaceTable1 /* objidlbase.h:167:41 */

type ISynchronize1 = struct{ lpVtbl uintptr } /* objidlbase.h:172:9 */

type ISynchronize = ISynchronize1 /* objidlbase.h:172:32 */

type ISynchronizeHandle1 = struct{ lpVtbl uintptr } /* objidlbase.h:177:9 */

type ISynchronizeHandle = ISynchronizeHandle1 /* objidlbase.h:177:38 */

type ISynchronizeEvent1 = struct{ lpVtbl uintptr } /* objidlbase.h:182:9 */

type ISynchronizeEvent = ISynchronizeEvent1 /* objidlbase.h:182:37 */

type ISynchronizeContainer1 = struct{ lpVtbl uintptr } /* objidlbase.h:187:9 */

type ISynchronizeContainer = ISynchronizeContainer1 /* objidlbase.h:187:41 */

type ISynchronizeMutex1 = struct{ lpVtbl uintptr } /* objidlbase.h:192:9 */

type ISynchronizeMutex = ISynchronizeMutex1 /* objidlbase.h:192:37 */

type ICancelMethodCalls1 = struct{ lpVtbl uintptr } /* objidlbase.h:197:9 */

type ICancelMethodCalls = ICancelMethodCalls1 /* objidlbase.h:197:38 */

type IAsyncManager1 = struct{ lpVtbl uintptr } /* objidlbase.h:202:9 */

type IAsyncManager = IAsyncManager1 /* objidlbase.h:202:33 */

type ICallFactory1 = struct{ lpVtbl uintptr } /* objidlbase.h:207:9 */

type ICallFactory = ICallFactory1 /* objidlbase.h:207:32 */

type IRpcHelper1 = struct{ lpVtbl uintptr } /* objidlbase.h:212:9 */

type IRpcHelper = IRpcHelper1 /* objidlbase.h:212:30 */

type IReleaseMarshalBuffers1 = struct{ lpVtbl uintptr } /* objidlbase.h:217:9 */

type IReleaseMarshalBuffers = IReleaseMarshalBuffers1 /* objidlbase.h:217:42 */

type IWaitMultiple1 = struct{ lpVtbl uintptr } /* objidlbase.h:222:9 */

type IWaitMultiple = IWaitMultiple1 /* objidlbase.h:222:33 */

type IAddrTrackingControl1 = struct{ lpVtbl uintptr } /* objidlbase.h:227:9 */

type IAddrTrackingControl = IAddrTrackingControl1 /* objidlbase.h:227:40 */

type IAddrExclusionControl1 = struct{ lpVtbl uintptr } /* objidlbase.h:232:9 */

type IAddrExclusionControl = IAddrExclusionControl1 /* objidlbase.h:232:41 */

type IPipeByte1 = struct{ lpVtbl uintptr } /* objidlbase.h:237:9 */

type IPipeByte = IPipeByte1 /* objidlbase.h:237:29 */

type IPipeLong1 = struct{ lpVtbl uintptr } /* objidlbase.h:242:9 */

type IPipeLong = IPipeLong1 /* objidlbase.h:242:29 */

type IPipeDouble1 = struct{ lpVtbl uintptr } /* objidlbase.h:247:9 */

type IPipeDouble = IPipeDouble1 /* objidlbase.h:247:31 */

type IComThreadingInfo1 = struct{ lpVtbl uintptr } /* objidlbase.h:262:9 */

type IComThreadingInfo = IComThreadingInfo1 /* objidlbase.h:262:37 */

type IProcessInitControl1 = struct{ lpVtbl uintptr } /* objidlbase.h:267:9 */

type IProcessInitControl = IProcessInitControl1 /* objidlbase.h:267:39 */

type IFastRundown1 = struct{ lpVtbl uintptr } /* objidlbase.h:272:9 */

type IFastRundown = IFastRundown1 /* objidlbase.h:272:32 */

type IMarshalingStream1 = struct{ lpVtbl uintptr } /* objidlbase.h:277:9 */

type IMarshalingStream = IMarshalingStream1 /* objidlbase.h:277:37 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/unknwnbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/wtypesbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type _COSERVERINFO = struct {
	dwReserved1 DWORD
	pwszName    LPWSTR
	pAuthInfo   uintptr
	dwReserved2 DWORD
} /* objidlbase.h:352:9 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/unknwnbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/wtypesbase.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type COSERVERINFO = _COSERVERINFO /* objidlbase.h:357:3 */

// ****************************************************************************
//
// IMarshal interface

type LPMARSHAL = uintptr /* objidlbase.h:365:18 */
type IMarshalVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetUnmarshalClass  uintptr
	GetMarshalSizeMax  uintptr
	MarshalInterface   uintptr
	UnmarshalInterface uintptr
	ReleaseMarshalData uintptr
	DisconnectObject   uintptr
} /* objidlbase.h:22:9 */

type IMarshalVtbl = IMarshalVtbl1 /* objidlbase.h:469:3 */
type INoMarshalVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
} /* objidlbase.h:27:9 */

type INoMarshalVtbl = INoMarshalVtbl1 /* objidlbase.h:623:3 */
type IAgileObjectVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
} /* objidlbase.h:32:9 */

type IAgileObjectVtbl = IAgileObjectVtbl1 /* objidlbase.h:686:3 */
type IAgileReferenceVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Resolve        uintptr
} /* objidlbase.h:37:9 */

type IAgileReferenceVtbl = IAgileReferenceVtbl1 /* objidlbase.h:758:3 */

// ****************************************************************************
//
// IMarshal2 interface

type LPMARSHAL2 = uintptr /* objidlbase.h:812:19 */
type IMarshal2Vtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetUnmarshalClass  uintptr
	GetMarshalSizeMax  uintptr
	MarshalInterface   uintptr
	UnmarshalInterface uintptr
	ReleaseMarshalData uintptr
	DisconnectObject   uintptr
} /* objidlbase.h:42:9 */

type IMarshal2Vtbl = IMarshal2Vtbl1 /* objidlbase.h:881:3 */

// ****************************************************************************
//
// IMalloc interface

type LPMALLOC = uintptr /* objidlbase.h:944:17 */
type IMallocVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Alloc          uintptr
	Realloc        uintptr
	Free           uintptr
	GetSize        uintptr
	DidAlloc       uintptr
	HeapMinimize   uintptr
} /* objidlbase.h:47:9 */

type IMallocVtbl = IMallocVtbl1 /* objidlbase.h:1016:3 */

// ****************************************************************************
//
// IStdMarshalInfo interface

type LPSTDMARSHALINFO = uintptr /* objidlbase.h:1127:25 */
type IStdMarshalInfoVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetClassForHandler uintptr
} /* objidlbase.h:52:9 */

type IStdMarshalInfoVtbl = IStdMarshalInfoVtbl1 /* objidlbase.h:1167:3 */

// ****************************************************************************
//
// IExternalConnection interface

type LPEXTERNALCONNECTION = uintptr /* objidlbase.h:1220:29 */

type EXTCONN = uint32 /* objidlbase.h:1226:3 */
type IExternalConnectionVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	AddConnection     uintptr
	ReleaseConnection uintptr
} /* objidlbase.h:57:9 */

type IExternalConnectionVtbl = IExternalConnectionVtbl1 /* objidlbase.h:1275:3 */

type LPMULTIQI = uintptr /* objidlbase.h:1335:18 */

type tagMULTI_QI = struct {
	pIID uintptr
	pItf uintptr
	hr   HRESULT
} /* objidlbase.h:1339:9 */

type MULTI_QI = tagMULTI_QI /* objidlbase.h:1343:3 */
type IMultiQIVtbl1 = struct {
	QueryInterface          uintptr
	AddRef                  uintptr
	Release                 uintptr
	QueryMultipleInterfaces uintptr
} /* objidlbase.h:62:9 */

type IMultiQIVtbl = IMultiQIVtbl1 /* objidlbase.h:1387:3 */
type AsyncIMultiQIVtbl1 = struct {
	QueryInterface                 uintptr
	AddRef                         uintptr
	Release                        uintptr
	Begin_QueryMultipleInterfaces  uintptr
	Finish_QueryMultipleInterfaces uintptr
} /* objidlbase.h:67:9 */

type AsyncIMultiQIVtbl = AsyncIMultiQIVtbl1 /* objidlbase.h:1481:3 */
type IInternalUnknownVtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	QueryInternalInterface uintptr
} /* objidlbase.h:72:9 */

type IInternalUnknownVtbl = IInternalUnknownVtbl1 /* objidlbase.h:1584:3 */

// ****************************************************************************
//
// IEnumUnknown interface

type LPENUMUNKNOWN = uintptr /* objidlbase.h:1638:22 */
type IEnumUnknownVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidlbase.h:77:9 */

type IEnumUnknownVtbl = IEnumUnknownVtbl1 /* objidlbase.h:1698:3 */

// ****************************************************************************
//
// IEnumString interface

type LPENUMSTRING = uintptr /* objidlbase.h:1796:21 */
type IEnumStringVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidlbase.h:82:9 */

type IEnumStringVtbl = IEnumStringVtbl1 /* objidlbase.h:1856:3 */
type ISequentialStreamVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Read           uintptr
	Write          uintptr
} /* objidlbase.h:87:9 */

type ISequentialStreamVtbl = ISequentialStreamVtbl1 /* objidlbase.h:2003:3 */

// ****************************************************************************
//
// IStream interface

type LPSTREAM = uintptr /* objidlbase.h:2090:17 */

type tagSTATSTG = struct {
	pwcsName          LPOLESTR
	__type            DWORD
	cbSize            ULARGE_INTEGER
	mtime             FILETIME
	ctime             FILETIME
	atime             FILETIME
	grfMode           DWORD
	grfLocksSupported DWORD
	clsid             CLSID
	grfStateBits      DWORD
	reserved          DWORD
} /* objidlbase.h:2092:9 */

type STATSTG = tagSTATSTG /* objidlbase.h:2104:3 */

type STGTY = uint32 /* objidlbase.h:2111:3 */

type STREAM_SEEK = uint32 /* objidlbase.h:2117:3 */

type LOCKTYPE = uint32 /* objidlbase.h:2123:3 */
type IStreamVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Read           uintptr
	Write          uintptr
	Seek           uintptr
	SetSize        uintptr
	CopyTo         uintptr
	Commit         uintptr
	Revert         uintptr
	LockRegion     uintptr
	UnlockRegion   uintptr
	Stat           uintptr
	Clone          uintptr
} /* objidlbase.h:92:9 */

type IStreamVtbl = IStreamVtbl1 /* objidlbase.h:2247:3 */

// ****************************************************************************
//
// IRpcChannelBuffer interface

type RPCOLEDATAREP = ULONG /* objidlbase.h:2435:15 */

type tagRPCOLEMESSAGE = struct {
	reserved1          uintptr
	dataRepresentation RPCOLEDATAREP
	Buffer             uintptr
	cbBuffer           ULONG
	iMethod            ULONG
	reserved2          [5]uintptr
	rpcFlags           ULONG
} /* objidlbase.h:2437:9 */

type RPCOLEMESSAGE = tagRPCOLEMESSAGE /* objidlbase.h:2445:3 */

type PRPCOLEMESSAGE = uintptr /* objidlbase.h:2447:23 */
type IRpcChannelBufferVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetBuffer      uintptr
	SendReceive    uintptr
	FreeBuffer     uintptr
	GetDestCtx     uintptr
	IsConnected    uintptr
} /* rpcndr.h:211:3 */

type IRpcChannelBufferVtbl = IRpcChannelBufferVtbl1 /* objidlbase.h:2516:3 */
type IRpcChannelBuffer2Vtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetBuffer          uintptr
	SendReceive        uintptr
	FreeBuffer         uintptr
	GetDestCtx         uintptr
	IsConnected        uintptr
	GetProtocolVersion uintptr
} /* objidlbase.h:102:9 */

type IRpcChannelBuffer2Vtbl = IRpcChannelBuffer2Vtbl1 /* objidlbase.h:2676:3 */
type IAsyncRpcChannelBufferVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetBuffer          uintptr
	SendReceive        uintptr
	FreeBuffer         uintptr
	GetDestCtx         uintptr
	IsConnected        uintptr
	GetProtocolVersion uintptr
	Send               uintptr
	Receive            uintptr
	GetDestCtxEx       uintptr
} /* objidlbase.h:107:9 */

type IAsyncRpcChannelBufferVtbl = IAsyncRpcChannelBufferVtbl1 /* objidlbase.h:2835:3 */
type IRpcChannelBuffer3Vtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetBuffer          uintptr
	SendReceive        uintptr
	FreeBuffer         uintptr
	GetDestCtx         uintptr
	IsConnected        uintptr
	GetProtocolVersion uintptr
	Send               uintptr
	Receive            uintptr
	Cancel             uintptr
	GetCallContext     uintptr
	GetDestCtxEx       uintptr
	GetState           uintptr
	RegisterAsync      uintptr
} /* objidlbase.h:112:9 */

type IRpcChannelBuffer3Vtbl = IRpcChannelBuffer3Vtbl1 /* objidlbase.h:3065:3 */
type IRpcSyntaxNegotiateVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	NegotiateSyntax uintptr
} /* objidlbase.h:117:9 */

type IRpcSyntaxNegotiateVtbl = IRpcSyntaxNegotiateVtbl1 /* objidlbase.h:3259:3 */
type IRpcProxyBufferVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Connect        uintptr
	Disconnect     uintptr
} /* objidlbase.h:122:9 */

type IRpcProxyBufferVtbl = IRpcProxyBufferVtbl1 /* objidlbase.h:3350:3 */
type IRpcStubBufferVtbl1 = struct {
	QueryInterface            uintptr
	AddRef                    uintptr
	Release                   uintptr
	Connect                   uintptr
	Disconnect                uintptr
	Invoke                    uintptr
	IsIIDSupported            uintptr
	CountRefs                 uintptr
	DebugServerQueryInterface uintptr
	DebugServerRelease        uintptr
} /* rpcndr.h:680:3 */

type IRpcStubBufferVtbl = IRpcStubBufferVtbl1 /* objidlbase.h:3490:3 */
type IPSFactoryBufferVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	CreateProxy    uintptr
	CreateStub     uintptr
} /* objidlbase.h:132:9 */

type IPSFactoryBufferVtbl = IPSFactoryBufferVtbl1 /* objidlbase.h:3663:3 */

type SChannelHookCallInfo1 = struct {
	iid         IID
	cbSize      DWORD
	uCausality  GUID
	dwServerPid DWORD
	iMethod     DWORD
	pObject     uintptr
} /* objidlbase.h:3728:9 */

type SChannelHookCallInfo = SChannelHookCallInfo1 /* objidlbase.h:3735:3 */
type IChannelHookVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	ClientGetSize    uintptr
	ClientFillBuffer uintptr
	ClientNotify     uintptr
	ServerNotify     uintptr
	ServerGetSize    uintptr
	ServerFillBuffer uintptr
} /* objidlbase.h:137:9 */

type IChannelHookVtbl = IChannelHookVtbl1 /* objidlbase.h:3854:3 */

// ****************************************************************************
//
// IClientSecurity interface

type tagSOLE_AUTHENTICATION_SERVICE = struct {
	dwAuthnSvc     DWORD
	dwAuthzSvc     DWORD
	pPrincipalName uintptr
	hr             HRESULT
} /* objidlbase.h:3990:9 */

// ****************************************************************************
//
// IClientSecurity interface

type SOLE_AUTHENTICATION_SERVICE = tagSOLE_AUTHENTICATION_SERVICE /* objidlbase.h:3995:3 */

type PSOLE_AUTHENTICATION_SERVICE = uintptr /* objidlbase.h:3997:37 */

type EOLE_AUTHENTICATION_CAPABILITIES = uint32 /* objidlbase.h:4015:3 */

type tagSOLE_AUTHENTICATION_INFO = struct {
	dwAuthnSvc DWORD
	dwAuthzSvc DWORD
	pAuthInfo  uintptr
} /* objidlbase.h:4022:9 */

type SOLE_AUTHENTICATION_INFO = tagSOLE_AUTHENTICATION_INFO /* objidlbase.h:4026:3 */
type PSOLE_AUTHENTICATION_INFO = uintptr                    /* objidlbase.h:4027:44 */

type tagSOLE_AUTHENTICATION_LIST = struct {
	cAuthInfo DWORD
	aAuthInfo uintptr
} /* objidlbase.h:4029:9 */

type SOLE_AUTHENTICATION_LIST = tagSOLE_AUTHENTICATION_LIST /* objidlbase.h:4032:3 */
type PSOLE_AUTHENTICATION_LIST = uintptr                    /* objidlbase.h:4033:44 */
type IClientSecurityVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	QueryBlanket   uintptr
	SetBlanket     uintptr
	CopyProxy      uintptr
} /* objidlbase.h:142:9 */

type IClientSecurityVtbl = IClientSecurityVtbl1 /* objidlbase.h:4113:3 */
type IServerSecurityVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	QueryBlanket      uintptr
	ImpersonateClient uintptr
	RevertToSelf      uintptr
	IsImpersonating   uintptr
} /* objidlbase.h:147:9 */

type IServerSecurityVtbl = IServerSecurityVtbl1 /* objidlbase.h:4269:3 */

type RPCOPT_PROPERTIES = uint32 /* objidlbase.h:4357:3 */

type RPCOPT_SERVER_LOCALITY_VALUES = uint32 /* objidlbase.h:4363:3 */
type IRpcOptionsVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Set            uintptr
	Query          uintptr
} /* objidlbase.h:152:9 */

type IRpcOptionsVtbl = IRpcOptionsVtbl1 /* objidlbase.h:4420:3 */

type GLOBALOPT_PROPERTIES = uint32 /* objidlbase.h:4489:3 */

type GLOBALOPT_EH_VALUES = uint32 /* objidlbase.h:4496:3 */

type GLOBALOPT_RPCTP_VALUES = uint32 /* objidlbase.h:4501:3 */

type GLOBALOPT_RO_FLAGS = uint32 /* objidlbase.h:4512:3 */

type GLOBALOPT_UNMARSHALING_POLICY_VALUES = uint32 /* objidlbase.h:4518:3 */
type IGlobalOptionsVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Set            uintptr
	Query          uintptr
} /* objidlbase.h:157:9 */

type IGlobalOptionsVtbl = IGlobalOptionsVtbl1 /* objidlbase.h:4571:3 */

// ****************************************************************************
//
// ISurrogate interface

type LPSURROGATE = uintptr /* objidlbase.h:4639:20 */
type ISurrogateVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	LoadDllServer  uintptr
	FreeSurrogate  uintptr
} /* objidlbase.h:162:9 */

type ISurrogateVtbl = ISurrogateVtbl1 /* objidlbase.h:4681:3 */

// ****************************************************************************
//
// IGlobalInterfaceTable interface

type LPGLOBALINTERFACETABLE = uintptr /* objidlbase.h:4743:31 */
type IGlobalInterfaceTableVtbl1 = struct {
	QueryInterface            uintptr
	AddRef                    uintptr
	Release                   uintptr
	RegisterInterfaceInGlobal uintptr
	RevokeInterfaceFromGlobal uintptr
	GetInterfaceFromGlobal    uintptr
} /* objidlbase.h:167:9 */

type IGlobalInterfaceTableVtbl = IGlobalInterfaceTableVtbl1 /* objidlbase.h:4801:3 */
type ISynchronizeVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Wait           uintptr
	Signal         uintptr
	Reset          uintptr
} /* objidlbase.h:172:9 */

type ISynchronizeVtbl = ISynchronizeVtbl1 /* objidlbase.h:4930:3 */
type ISynchronizeHandleVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetHandle      uintptr
} /* objidlbase.h:177:9 */

type ISynchronizeHandleVtbl = ISynchronizeHandleVtbl1 /* objidlbase.h:5038:3 */
type ISynchronizeEventVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetHandle      uintptr
	SetEventHandle uintptr
} /* objidlbase.h:182:9 */

type ISynchronizeEventVtbl = ISynchronizeEventVtbl1 /* objidlbase.h:5128:3 */
type ISynchronizeContainerVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	AddSynchronize uintptr
	WaitMultiple   uintptr
} /* objidlbase.h:187:9 */

type ISynchronizeContainerVtbl = ISynchronizeContainerVtbl1 /* objidlbase.h:5230:3 */
type ISynchronizeMutexVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Wait           uintptr
	Signal         uintptr
	Reset          uintptr
	ReleaseMutex   uintptr
} /* objidlbase.h:192:9 */

type ISynchronizeMutexVtbl = ISynchronizeMutexVtbl1 /* objidlbase.h:5340:3 */

// ****************************************************************************
//
// ICancelMethodCalls interface

type LPCANCELMETHODCALLS = uintptr /* objidlbase.h:5404:28 */
type ICancelMethodCallsVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Cancel         uintptr
	TestCancel     uintptr
} /* objidlbase.h:197:9 */

type ICancelMethodCallsVtbl = ICancelMethodCallsVtbl1 /* objidlbase.h:5446:3 */

// ****************************************************************************
//
// IAsyncManager interface

type DCOM_CALL_STATE = uint32 /* objidlbase.h:5512:3 */
type IAsyncManagerVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	CompleteCall   uintptr
	GetCallContext uintptr
	GetState       uintptr
} /* objidlbase.h:202:9 */

type IAsyncManagerVtbl = IAsyncManagerVtbl1 /* objidlbase.h:5564:3 */
type ICallFactoryVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	CreateCall     uintptr
} /* objidlbase.h:207:9 */

type ICallFactoryVtbl = ICallFactoryVtbl1 /* objidlbase.h:5680:3 */
type IRpcHelperVtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	GetDCOMProtocolVersion uintptr
	GetIIDFromOBJREF       uintptr
} /* objidlbase.h:212:9 */

type IRpcHelperVtbl = IRpcHelperVtbl1 /* objidlbase.h:5777:3 */
type IReleaseMarshalBuffersVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	ReleaseMarshalBuffer uintptr
} /* objidlbase.h:217:9 */

type IReleaseMarshalBuffersVtbl = IReleaseMarshalBuffersVtbl1 /* objidlbase.h:5879:3 */
type IWaitMultipleVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	WaitMultiple   uintptr
	AddSynchronize uintptr
} /* objidlbase.h:222:9 */

type IWaitMultipleVtbl = IWaitMultipleVtbl1 /* objidlbase.h:5975:3 */

// ****************************************************************************
//
// IAddrTrackingControl interface

type LPADDRTRACKINGCONTROL = uintptr /* objidlbase.h:6039:30 */
type IAddrTrackingControlVtbl1 = struct {
	QueryInterface                uintptr
	AddRef                        uintptr
	Release                       uintptr
	EnableCOMDynamicAddrTracking  uintptr
	DisableCOMDynamicAddrTracking uintptr
} /* objidlbase.h:227:9 */

type IAddrTrackingControlVtbl = IAddrTrackingControlVtbl1 /* objidlbase.h:6079:3 */

// ****************************************************************************
//
// IAddrExclusionControl interface

type LPADDREXCLUSIONCONTROL = uintptr /* objidlbase.h:6140:31 */
type IAddrExclusionControlVtbl1 = struct {
	QueryInterface              uintptr
	AddRef                      uintptr
	Release                     uintptr
	GetCurrentAddrExclusionList uintptr
	UpdateAddrExclusionList     uintptr
} /* objidlbase.h:232:9 */

type IAddrExclusionControlVtbl = IAddrExclusionControlVtbl1 /* objidlbase.h:6184:3 */
type IPipeByteVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Pull           uintptr
	Push           uintptr
} /* objidlbase.h:237:9 */

type IPipeByteVtbl = IPipeByteVtbl1 /* objidlbase.h:6295:3 */
type IPipeLongVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Pull           uintptr
	Push           uintptr
} /* objidlbase.h:242:9 */

type IPipeLongVtbl = IPipeLongVtbl1 /* objidlbase.h:6408:3 */
type IPipeDoubleVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Pull           uintptr
	Push           uintptr
} /* objidlbase.h:247:9 */

type IPipeDoubleVtbl = IPipeDoubleVtbl1 /* objidlbase.h:6521:3 */

type APTTYPEQUALIFIER = uint32 /* objidlbase.h:6923:3 */

type APTTYPE = int32 /* objidlbase.h:6931:3 */

type THDTYPE = uint32 /* objidlbase.h:6938:3 */

type APARTMENTID = DWORD /* objidlbase.h:6940:15 */
type IComThreadingInfoVtbl1 = struct {
	QueryInterface            uintptr
	AddRef                    uintptr
	Release                   uintptr
	GetCurrentApartmentType   uintptr
	GetCurrentThreadType      uintptr
	GetCurrentLogicalThreadId uintptr
	SetCurrentLogicalThreadId uintptr
} /* objidlbase.h:262:9 */

type IComThreadingInfoVtbl = IComThreadingInfoVtbl1 /* objidlbase.h:7003:3 */
type IProcessInitControlVtbl1 = struct {
	QueryInterface          uintptr
	AddRef                  uintptr
	Release                 uintptr
	ResetInitializerTimeout uintptr
} /* objidlbase.h:267:9 */

type IProcessInitControlVtbl = IProcessInitControlVtbl1 /* objidlbase.h:7124:3 */
type IFastRundownVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
} /* objidlbase.h:272:9 */

type IFastRundownVtbl = IFastRundownVtbl1 /* objidlbase.h:7201:3 */

type CO_MARSHALING_CONTEXT_ATTRIBUTES = uint32 /* objidlbase.h:7234:3 */
type IMarshalingStreamVtbl1 = struct {
	QueryInterface                uintptr
	AddRef                        uintptr
	Release                       uintptr
	Read                          uintptr
	Write                         uintptr
	Seek                          uintptr
	SetSize                       uintptr
	CopyTo                        uintptr
	Commit                        uintptr
	Revert                        uintptr
	LockRegion                    uintptr
	UnlockRegion                  uintptr
	Stat                          uintptr
	Clone                         uintptr
	GetMarshalingContextAttribute uintptr
} /* objidlbase.h:277:9 */

type IMarshalingStreamVtbl = IMarshalingStreamVtbl1 /* objidlbase.h:7337:3 */

type STDMSHLFLAGS = uint32 /* combaseapi.h:217:3 */

type tagPROPVARIANT = struct {
	__0 struct {
		__0 struct {
			vt         VARTYPE
			wReserved1 PROPVAR_PAD1
			wReserved2 PROPVAR_PAD2
			wReserved3 PROPVAR_PAD3
			__8        struct {
				_    [0]uint64
				cVal CHAR
				_    [7]byte
			}
		}
	}
} /* combaseapi.h:306:9 */

type PROPVARIANT = tagPROPVARIANT /* combaseapi.h:306:31 */

type COWAIT_FLAGS = uint32 /* combaseapi.h:329:3 */

type LPFNGETCLASSOBJECT = uintptr /* combaseapi.h:356:17 */
type LPFNCANUNLOADNOW = uintptr   /* combaseapi.h:357:17 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

type COINIT = uint32 /* objbase.h:21:3 */

type STGFMT = DWORD /* objbase.h:57:15 */

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IMallocSpy1 = struct{ lpVtbl uintptr } /* objidl.h:277:9 */

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IMallocSpy = IMallocSpy1 /* objidl.h:277:30 */

type IBindCtx1 = struct{ lpVtbl uintptr } /* objidl.h:282:9 */

type IBindCtx = IBindCtx1 /* objidl.h:282:28 */

type IEnumMoniker1 = struct{ lpVtbl uintptr } /* objidl.h:287:9 */

type IEnumMoniker = IEnumMoniker1 /* objidl.h:287:32 */

type IRunnableObject1 = struct{ lpVtbl uintptr } /* objidl.h:292:9 */

type IRunnableObject = IRunnableObject1 /* objidl.h:292:35 */

type IRunningObjectTable1 = struct{ lpVtbl uintptr } /* objidl.h:297:9 */

type IRunningObjectTable = IRunningObjectTable1 /* objidl.h:297:39 */

type IPersist1 = struct{ lpVtbl uintptr } /* objidl.h:302:9 */

type IPersist = IPersist1 /* objidl.h:302:28 */

type IPersistStream1 = struct{ lpVtbl uintptr } /* objidl.h:307:9 */

type IPersistStream = IPersistStream1 /* objidl.h:307:34 */

type IMoniker1 = struct{ lpVtbl uintptr } /* objidl.h:312:9 */

type IMoniker = IMoniker1 /* objidl.h:312:28 */

type IROTData1 = struct{ lpVtbl uintptr } /* objidl.h:317:9 */

type IROTData = IROTData1 /* objidl.h:317:28 */

type IEnumSTATSTG1 = struct{ lpVtbl uintptr } /* objidl.h:322:9 */

type IEnumSTATSTG = IEnumSTATSTG1 /* objidl.h:322:32 */

type IStorage1 = struct{ lpVtbl uintptr } /* objidl.h:327:9 */

type IStorage = IStorage1 /* objidl.h:327:28 */

type IPersistFile1 = struct{ lpVtbl uintptr } /* objidl.h:332:9 */

type IPersistFile = IPersistFile1 /* objidl.h:332:32 */

type IPersistStorage1 = struct{ lpVtbl uintptr } /* objidl.h:337:9 */

type IPersistStorage = IPersistStorage1 /* objidl.h:337:35 */

type ILockBytes1 = struct{ lpVtbl uintptr } /* objidl.h:342:9 */

type ILockBytes = ILockBytes1 /* objidl.h:342:30 */

type IEnumFORMATETC1 = struct{ lpVtbl uintptr } /* objidl.h:347:9 */

type IEnumFORMATETC = IEnumFORMATETC1 /* objidl.h:347:34 */

type IEnumSTATDATA1 = struct{ lpVtbl uintptr } /* objidl.h:352:9 */

type IEnumSTATDATA = IEnumSTATDATA1 /* objidl.h:352:33 */

type IRootStorage1 = struct{ lpVtbl uintptr } /* objidl.h:357:9 */

type IRootStorage = IRootStorage1 /* objidl.h:357:32 */

type IAdviseSink1 = struct{ lpVtbl uintptr } /* objidl.h:362:9 */

type IAdviseSink = IAdviseSink1 /* objidl.h:362:31 */

type AsyncIAdviseSink1 = struct{ lpVtbl uintptr } /* objidl.h:367:9 */

type AsyncIAdviseSink = AsyncIAdviseSink1 /* objidl.h:367:36 */

type IAdviseSink21 = struct{ lpVtbl uintptr } /* objidl.h:372:9 */

type IAdviseSink2 = IAdviseSink21 /* objidl.h:372:32 */

type AsyncIAdviseSink21 = struct{ lpVtbl uintptr } /* objidl.h:377:9 */

type AsyncIAdviseSink2 = AsyncIAdviseSink21 /* objidl.h:377:37 */

type IDataObject1 = struct{ lpVtbl uintptr } /* objidl.h:382:9 */

type IDataObject = IDataObject1 /* objidl.h:382:31 */

type IDataAdviseHolder1 = struct{ lpVtbl uintptr } /* objidl.h:387:9 */

type IDataAdviseHolder = IDataAdviseHolder1 /* objidl.h:387:37 */

type IMessageFilter1 = struct{ lpVtbl uintptr } /* objidl.h:392:9 */

type IMessageFilter = IMessageFilter1 /* objidl.h:392:34 */

type IClassActivator1 = struct{ lpVtbl uintptr } /* objidl.h:397:9 */

type IClassActivator = IClassActivator1 /* objidl.h:397:35 */

type IFillLockBytes1 = struct{ lpVtbl uintptr } /* objidl.h:402:9 */

type IFillLockBytes = IFillLockBytes1 /* objidl.h:402:34 */

type IProgressNotify1 = struct{ lpVtbl uintptr } /* objidl.h:407:9 */

type IProgressNotify = IProgressNotify1 /* objidl.h:407:35 */

type ILayoutStorage1 = struct{ lpVtbl uintptr } /* objidl.h:412:9 */

type ILayoutStorage = ILayoutStorage1 /* objidl.h:412:34 */

type IBlockingLock1 = struct{ lpVtbl uintptr } /* objidl.h:417:9 */

type IBlockingLock = IBlockingLock1 /* objidl.h:417:33 */

type ITimeAndNoticeControl1 = struct{ lpVtbl uintptr } /* objidl.h:422:9 */

type ITimeAndNoticeControl = ITimeAndNoticeControl1 /* objidl.h:422:41 */

type IOplockStorage1 = struct{ lpVtbl uintptr } /* objidl.h:427:9 */

type IOplockStorage = IOplockStorage1 /* objidl.h:427:34 */

type IDirectWriterLock1 = struct{ lpVtbl uintptr } /* objidl.h:432:9 */

type IDirectWriterLock = IDirectWriterLock1 /* objidl.h:432:37 */

type IUrlMon1 = struct{ lpVtbl uintptr } /* objidl.h:437:9 */

type IUrlMon = IUrlMon1 /* objidl.h:437:27 */

type IForegroundTransfer1 = struct{ lpVtbl uintptr } /* objidl.h:442:9 */

type IForegroundTransfer = IForegroundTransfer1 /* objidl.h:442:39 */

type IThumbnailExtractor1 = struct{ lpVtbl uintptr } /* objidl.h:447:9 */

type IThumbnailExtractor = IThumbnailExtractor1 /* objidl.h:447:39 */

type IDummyHICONIncluder1 = struct{ lpVtbl uintptr } /* objidl.h:452:9 */

type IDummyHICONIncluder = IDummyHICONIncluder1 /* objidl.h:452:39 */

type IProcessLock1 = struct{ lpVtbl uintptr } /* objidl.h:457:9 */

type IProcessLock = IProcessLock1 /* objidl.h:457:32 */

type ISurrogateService1 = struct{ lpVtbl uintptr } /* objidl.h:462:9 */

type ISurrogateService = ISurrogateService1 /* objidl.h:462:37 */

type IInitializeSpy1 = struct{ lpVtbl uintptr } /* objidl.h:467:9 */

type IInitializeSpy = IInitializeSpy1 /* objidl.h:467:34 */

type IApartmentShutdown1 = struct{ lpVtbl uintptr } /* objidl.h:472:9 */

type IApartmentShutdown = IApartmentShutdown1 /* objidl.h:472:38 */
type tagRemHGLOBAL = struct {
	fNullHGlobal LONG
	cbData       ULONG
	data         [1]byte
	_            [3]byte
} /* wtypes.h:42:9 */

type RemHGLOBAL = tagRemHGLOBAL /* wtypes.h:46:3 */

type tagRemHMETAFILEPICT = struct {
	mm     LONG
	xExt   LONG
	yExt   LONG
	cbData ULONG
	data   [1]byte
	_      [3]byte
} /* wtypes.h:48:9 */

type RemHMETAFILEPICT = tagRemHMETAFILEPICT /* wtypes.h:54:3 */

type tagRemHENHMETAFILE = struct {
	cbData ULONG
	data   [1]byte
	_      [3]byte
} /* wtypes.h:56:9 */

type RemHENHMETAFILE = tagRemHENHMETAFILE /* wtypes.h:59:3 */
type tagRemHBITMAP = struct {
	cbData ULONG
	data   [1]byte
	_      [3]byte
} /* wtypes.h:60:9 */

type RemHBITMAP = tagRemHBITMAP /* wtypes.h:63:3 */

type tagRemHPALETTE = struct {
	cbData ULONG
	data   [1]byte
	_      [3]byte
} /* wtypes.h:65:9 */

type RemHPALETTE = tagRemHPALETTE /* wtypes.h:68:3 */

type tagRemBRUSH = struct {
	cbData ULONG
	data   [1]byte
	_      [3]byte
} /* wtypes.h:70:9 */

type RemHBRUSH = tagRemBRUSH /* wtypes.h:73:3 */

type DVASPECT = uint32 /* wtypes.h:186:3 */

type STGC = uint32 /* wtypes.h:194:3 */

type STGMOVE = uint32 /* wtypes.h:200:3 */

type STATFLAG = uint32  /* wtypes.h:206:3 */
type HCONTEXT = uintptr /* wtypes.h:207:14 */

type _userCLIPFORMAT = struct {
	fContext LONG
	u        struct{ dwValue DWORD }
} /* wtypes.h:226:9 */

type userCLIPFORMAT = _userCLIPFORMAT /* wtypes.h:232:3 */

type wireCLIPFORMAT = uintptr /* wtypes.h:234:24 */
type CLIPFORMAT = WORD        /* wtypes.h:235:14 */

type _GDI_NONREMOTE = struct {
	fContext LONG
	u        struct{ hInproc LONG }
} /* wtypes.h:237:9 */

type GDI_NONREMOTE = _GDI_NONREMOTE /* wtypes.h:243:3 */

type _userHGLOBAL = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:245:9 */

type userHGLOBAL = _userHGLOBAL /* wtypes.h:252:3 */

type wireHGLOBAL = uintptr /* wtypes.h:254:21 */

type _userHMETAFILE = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:256:9 */

type userHMETAFILE = _userHMETAFILE /* wtypes.h:263:3 */

type _remoteMETAFILEPICT = struct {
	mm   LONG
	xExt LONG
	yExt LONG
	hMF  uintptr
} /* wtypes.h:265:9 */

type remoteMETAFILEPICT = _remoteMETAFILEPICT /* wtypes.h:270:3 */

type _userHMETAFILEPICT = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:272:9 */

type userHMETAFILEPICT = _userHMETAFILEPICT /* wtypes.h:279:3 */

type _userHENHMETAFILE = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:281:9 */

type userHENHMETAFILE = _userHENHMETAFILE /* wtypes.h:288:3 */

type _userBITMAP = struct {
	bmType       LONG
	bmWidth      LONG
	bmHeight     LONG
	bmWidthBytes LONG
	bmPlanes     WORD
	bmBitsPixel  WORD
	cbSize       ULONG
	pBuffer      [1]byte
	_            [3]byte
} /* wtypes.h:290:9 */

type userBITMAP = _userBITMAP /* wtypes.h:299:3 */

type _userHBITMAP = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:301:9 */

type userHBITMAP = _userHBITMAP /* wtypes.h:308:3 */

type _userHPALETTE = struct {
	fContext LONG
	_        [4]byte
	u        struct {
		_       [0]uint64
		hInproc LONG
		_       [4]byte
	}
} /* wtypes.h:310:9 */

type userHPALETTE = _userHPALETTE /* wtypes.h:317:3 */

type _RemotableHandle = struct {
	fContext LONG
	u        struct{ hInproc LONG }
} /* wtypes.h:319:9 */

type RemotableHandle = _RemotableHandle /* wtypes.h:325:3 */

type wireHWND = uintptr     /* wtypes.h:327:25 */
type wireHMENU = uintptr    /* wtypes.h:328:25 */
type wireHACCEL = uintptr   /* wtypes.h:329:25 */
type wireHBRUSH = uintptr   /* wtypes.h:330:25 */
type wireHFONT = uintptr    /* wtypes.h:331:25 */
type wireHDC = uintptr      /* wtypes.h:332:25 */
type wireHICON = uintptr    /* wtypes.h:333:25 */
type wireHRGN = uintptr     /* wtypes.h:334:25 */
type wireHMONITOR = uintptr /* wtypes.h:335:25 */

type wireHBITMAP = uintptr       /* wtypes.h:400:21 */
type wireHPALETTE = uintptr      /* wtypes.h:401:22 */
type wireHENHMETAFILE = uintptr  /* wtypes.h:402:26 */
type wireHMETAFILE = uintptr     /* wtypes.h:403:23 */
type wireHMETAFILEPICT = uintptr /* wtypes.h:404:27 */

type HMETAFILEPICT = uintptr /* wtypes.h:415:14 */

type DATE = float64 /* wtypes.h:420:16 */

type tagCY = struct {
	_   [0]uint64
	__0 struct {
		Lo uint32
		Hi int32
	}
} /* wtypes.h:431:9 */

type CY = tagCY /* wtypes.h:437:3 */

type LPCY = uintptr /* wtypes.h:441:12 */

type tagDEC = struct {
	wReserved USHORT
	__2       struct {
		_   [0]uint16
		__0 struct {
			scale BYTE
			sign  BYTE
		}
	}
	Hi32 ULONG
	__8  struct {
		_   [0]uint64
		__0 struct {
			Lo32  ULONG
			Mid32 ULONG
		}
	}
} /* wtypes.h:452:9 */

type DECIMAL = tagDEC /* wtypes.h:469:3 */

type LPDECIMAL = uintptr /* wtypes.h:475:17 */

type wireBSTR = uintptr /* wtypes.h:477:27 */
type BSTR = uintptr     /* wtypes.h:478:17 */

type LPBSTR = uintptr /* wtypes.h:480:14 */

type VARIANT_BOOL = int16 /* wtypes.h:482:15 */

type tagBSTRBLOB = struct {
	cbSize ULONG
	pData  uintptr
} /* wtypes.h:492:9 */

type BSTRBLOB = tagBSTRBLOB /* wtypes.h:495:3 */
type LPBSTRBLOB = uintptr   /* wtypes.h:496:28 */

type tagCLIPDATA = struct {
	cbSize    ULONG
	ulClipFmt LONG
	pClipData uintptr
} /* wtypes.h:502:9 */

type CLIPDATA = tagCLIPDATA /* wtypes.h:506:3 */

type VARTYPE = uint16 /* wtypes.h:510:24 */

type PROPID = ULONG /* wtypes.h:568:15 */

type _tagpropertykey = struct {
	fmtid GUID
	pid   DWORD
} /* wtypes.h:573:9 */

type PROPERTYKEY = _tagpropertykey /* wtypes.h:576:3 */

type tagCSPLATFORM = struct {
	dwPlatformId    DWORD
	dwVersionHi     DWORD
	dwVersionLo     DWORD
	dwProcessorArch DWORD
} /* wtypes.h:579:9 */

type CSPLATFORM = tagCSPLATFORM /* wtypes.h:584:3 */

type tagQUERYCONTEXT = struct {
	dwContext   DWORD
	Platform    CSPLATFORM
	Locale      LCID
	dwVersionHi DWORD
	dwVersionLo DWORD
} /* wtypes.h:586:9 */

type QUERYCONTEXT = tagQUERYCONTEXT /* wtypes.h:592:3 */

type TYSPEC = uint32 /* wtypes.h:602:3 */

type __WIDL_wtypes_generated_name_00000001 = struct {
	tyspec       DWORD
	tagged_union struct {
		clsid CLSID
		_     [16]byte
	}
} /* wtypes.h:604:9 */

type uCLSSPEC = __WIDL_wtypes_generated_name_00000001 /* wtypes.h:621:3 */
// Begin additional prototypes for all interfaces

// End additional prototypes

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// ****************************************************************************
//
// IUnknown interface

// ****************************************************************************
//
// AsyncIUnknown interface

// ****************************************************************************
//
// IClassFactory interface

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/wtypes.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// ****************************************************************************
//
// IMallocSpy interface

type LPMALLOCSPY = uintptr /* objidl.h:7612:20 */
type IMallocSpyVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	PreAlloc         uintptr
	PostAlloc        uintptr
	PreFree          uintptr
	PostFree         uintptr
	PreRealloc       uintptr
	PostRealloc      uintptr
	PreGetSize       uintptr
	PostGetSize      uintptr
	PreDidAlloc      uintptr
	PostDidAlloc     uintptr
	PreHeapMinimize  uintptr
	PostHeapMinimize uintptr
} /* objidl.h:277:9 */

type IMallocSpyVtbl = IMallocSpyVtbl1 /* objidl.h:7742:3 */

// ****************************************************************************
//
// IBindCtx interface

type LPBC = uintptr      /* objidl.h:7934:18 */
type LPBINDCTX = uintptr /* objidl.h:7935:18 */
type tagBIND_OPTS = struct {
	cbStruct            DWORD
	grfFlags            DWORD
	grfMode             DWORD
	dwTickCountDeadline DWORD
} /* objidl.h:7944:9 */

type BIND_OPTS = tagBIND_OPTS /* objidl.h:7949:3 */
type LPBIND_OPTS = uintptr    /* objidl.h:7950:29 */
type tagBIND_OPTS2 = struct {
	cbStruct            DWORD
	grfFlags            DWORD
	grfMode             DWORD
	dwTickCountDeadline DWORD
	dwTrackFlags        DWORD
	dwClassContext      DWORD
	locale              LCID
	pServerInfo         uintptr
} /* objidl.h:7960:9 */

type BIND_OPTS2 = tagBIND_OPTS2 /* objidl.h:7969:3 */
type LPBIND_OPTS2 = uintptr     /* objidl.h:7970:30 */
type tagBIND_OPTS3 = struct {
	cbStruct            DWORD
	grfFlags            DWORD
	grfMode             DWORD
	dwTickCountDeadline DWORD
	dwTrackFlags        DWORD
	dwClassContext      DWORD
	locale              LCID
	pServerInfo         uintptr
	hwnd                HWND
} /* objidl.h:7977:9 */

type BIND_OPTS3 = tagBIND_OPTS3 /* objidl.h:7987:3 */
type LPBIND_OPTS3 = uintptr     /* objidl.h:7988:30 */
type BIND_FLAGS = uint32        /* objidl.h:7993:3 */
type IBindCtxVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	RegisterObjectBound   uintptr
	RevokeObjectBound     uintptr
	ReleaseBoundObjects   uintptr
	SetBindOptions        uintptr
	GetBindOptions        uintptr
	GetRunningObjectTable uintptr
	RegisterObjectParam   uintptr
	GetObjectParam        uintptr
	EnumObjectParam       uintptr
	RevokeObjectParam     uintptr
} /* objidl.h:282:9 */

type IBindCtxVtbl = IBindCtxVtbl1 /* objidl.h:8094:3 */

// ****************************************************************************
//
// IEnumMoniker interface

type LPENUMMONIKER = uintptr /* objidl.h:8265:22 */
type IEnumMonikerVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidl.h:287:9 */

type IEnumMonikerVtbl = IEnumMonikerVtbl1 /* objidl.h:8324:3 */

// ****************************************************************************
//
// IRunnableObject interface

type LPRUNNABLEOBJECT = uintptr /* objidl.h:8423:25 */
type IRunnableObjectVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetRunningClass    uintptr
	Run                uintptr
	IsRunning          uintptr
	LockRunning        uintptr
	SetContainedObject uintptr
} /* objidl.h:292:9 */

type IRunnableObjectVtbl = IRunnableObjectVtbl1 /* objidl.h:8487:3 */

// ****************************************************************************
//
// IRunningObjectTable interface

type LPRUNNINGOBJECTTABLE = uintptr /* objidl.h:8589:29 */
type IRunningObjectTableVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	Register            uintptr
	Revoke              uintptr
	IsRunning           uintptr
	GetObjectW          uintptr
	NoteChangeTime      uintptr
	GetTimeOfLastChange uintptr
	EnumRunning         uintptr
} /* objidl.h:297:9 */

type IRunningObjectTableVtbl = IRunningObjectTableVtbl1 /* objidl.h:8678:3 */

// ****************************************************************************
//
// IPersist interface

type LPPERSIST = uintptr /* objidl.h:8808:18 */
type IPersistVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetClassID     uintptr
} /* objidl.h:302:9 */

type IPersistVtbl = IPersistVtbl1 /* objidl.h:8843:3 */

// ****************************************************************************
//
// IPersistStream interface

type LPPERSISTSTREAM = uintptr /* objidl.h:8893:24 */
type IPersistStreamVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetClassID     uintptr
	IsDirty        uintptr
	Load           uintptr
	Save           uintptr
	GetSizeMax     uintptr
} /* objidl.h:307:9 */

type IPersistStreamVtbl = IPersistStreamVtbl1 /* objidl.h:8955:3 */

// ****************************************************************************
//
// IMoniker interface

type LPMONIKER = uintptr /* objidl.h:9047:18 */
type MKSYS = uint32      /* objidl.h:9059:3 */
type MKRREDUCE = uint32  /* objidl.h:9065:3 */
type IMonikerVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	GetClassID          uintptr
	IsDirty             uintptr
	Load                uintptr
	Save                uintptr
	GetSizeMax          uintptr
	BindToObject        uintptr
	BindToStorage       uintptr
	Reduce              uintptr
	ComposeWith         uintptr
	Enum                uintptr
	IsEqual             uintptr
	Hash                uintptr
	IsRunning           uintptr
	GetTimeOfLastChange uintptr
	Inverse             uintptr
	CommonPrefixWith    uintptr
	RelativePathTo      uintptr
	GetDisplayName      uintptr
	ParseDisplayName    uintptr
	IsSystemMoniker     uintptr
} /* objidl.h:312:9 */

type IMonikerVtbl = IMonikerVtbl1 /* objidl.h:9268:3 */
type IROTDataVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	GetComparisonData uintptr
} /* objidl.h:317:9 */

type IROTDataVtbl = IROTDataVtbl1 /* objidl.h:9598:3 */

// ****************************************************************************
//
// IEnumSTATSTG interface

type LPENUMSTATSTG = uintptr /* objidl.h:9652:22 */
type IEnumSTATSTGVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidl.h:322:9 */

type IEnumSTATSTGVtbl = IEnumSTATSTGVtbl1 /* objidl.h:9711:3 */

// ****************************************************************************
//
// IStorage interface

type LPSTORAGE = uintptr /* objidl.h:9808:18 */
type tagRemSNB = struct {
	ulCntStr  ULONG
	ulCntChar ULONG
	rgString  [1]OLECHAR
	_         [2]byte
} /* objidl.h:9809:9 */

type RemSNB = tagRemSNB /* objidl.h:9813:3 */
type wireSNB = uintptr  /* objidl.h:9814:16 */
type SNB = uintptr      /* objidl.h:9815:18 */
type IStorageVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	CreateStream    uintptr
	OpenStream      uintptr
	CreateStorage   uintptr
	OpenStorage     uintptr
	CopyTo          uintptr
	MoveElementTo   uintptr
	Commit          uintptr
	Revert          uintptr
	EnumElements    uintptr
	DestroyElement  uintptr
	RenameElement   uintptr
	SetElementTimes uintptr
	SetClass        uintptr
	SetStateBits    uintptr
	Stat            uintptr
} /* objidl.h:327:9 */

type IStorageVtbl = IStorageVtbl1 /* objidl.h:10011:3 */

// ****************************************************************************
//
// IPersistFile interface

type LPPERSISTFILE = uintptr /* objidl.h:10304:22 */
type IPersistFileVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetClassID     uintptr
	IsDirty        uintptr
	Load           uintptr
	Save           uintptr
	SaveCompleted  uintptr
	GetCurFile     uintptr
} /* objidl.h:332:9 */

type IPersistFileVtbl = IPersistFileVtbl1 /* objidl.h:10375:3 */

// ****************************************************************************
//
// IPersistStorage interface

type LPPERSISTSTORAGE = uintptr /* objidl.h:10480:25 */
type IPersistStorageVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	GetClassID      uintptr
	IsDirty         uintptr
	InitNew         uintptr
	Load            uintptr
	Save            uintptr
	SaveCompleted   uintptr
	HandsOffStorage uintptr
} /* objidl.h:337:9 */

type IPersistStorageVtbl = IPersistStorageVtbl1 /* objidl.h:10555:3 */

// ****************************************************************************
//
// ILockBytes interface

type LPLOCKBYTES = uintptr /* objidl.h:10672:20 */
type ILockBytesVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	ReadAt         uintptr
	WriteAt        uintptr
	Flush          uintptr
	SetSize        uintptr
	LockRegion     uintptr
	UnlockRegion   uintptr
	Stat           uintptr
} /* objidl.h:342:9 */

type ILockBytesVtbl = ILockBytesVtbl1 /* objidl.h:10770:3 */

// ****************************************************************************
//
// IEnumFORMATETC interface

type LPENUMFORMATETC = uintptr /* objidl.h:10926:24 */
type tagDVTARGETDEVICE = struct {
	tdSize             DWORD
	tdDriverNameOffset WORD
	tdDeviceNameOffset WORD
	tdPortNameOffset   WORD
	tdExtDevmodeOffset WORD
	tdData             [1]BYTE
	_                  [3]byte
} /* objidl.h:10927:9 */

type DVTARGETDEVICE = tagDVTARGETDEVICE /* objidl.h:10934:3 */
type LPCLIPFORMAT = uintptr             /* objidl.h:10935:20 */
type tagFORMATETC = struct {
	cfFormat CLIPFORMAT
	_        [2]byte
	ptd      uintptr
	dwAspect DWORD
	lindex   LONG
	tymed    DWORD
} /* objidl.h:10936:9 */

type FORMATETC = tagFORMATETC /* objidl.h:10942:3 */
type LPFORMATETC = uintptr    /* objidl.h:10943:29 */
type IEnumFORMATETCVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidl.h:347:9 */

type IEnumFORMATETCVtbl = IEnumFORMATETCVtbl1 /* objidl.h:11002:3 */

// ****************************************************************************
//
// IEnumSTATDATA interface

type LPENUMSTATDATA = uintptr /* objidl.h:11099:23 */
type ADVF = uint32            /* objidl.h:11108:3 */
type tagSTATDATA = struct {
	formatetc    FORMATETC
	advf         DWORD
	pAdvSink     uintptr
	dwConnection DWORD
} /* objidl.h:11109:9 */

type STATDATA = tagSTATDATA /* objidl.h:11114:3 */
type LPSTATDATA = uintptr   /* objidl.h:11115:18 */
type IEnumSTATDATAVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* objidl.h:352:9 */

type IEnumSTATDATAVtbl = IEnumSTATDATAVtbl1 /* objidl.h:11174:3 */

// ****************************************************************************
//
// IRootStorage interface

type LPROOTSTORAGE = uintptr /* objidl.h:11271:22 */
type IRootStorageVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	SwitchToFile   uintptr
} /* objidl.h:357:9 */

type IRootStorageVtbl = IRootStorageVtbl1 /* objidl.h:11306:3 */

// ****************************************************************************
//
// IAdviseSink interface

type LPADVISESINK = uintptr /* objidl.h:11356:21 */
type TYMED = uint32         /* objidl.h:11366:3 */
type tagRemSTGMEDIUM = struct {
	tymed          DWORD
	dwHandleType   DWORD
	pData          ULONG
	pUnkForRelease ULONG
	cbData         ULONG
	data           [1]byte
	_              [3]byte
} /* objidl.h:11367:9 */

type RemSTGMEDIUM = tagRemSTGMEDIUM /* objidl.h:11374:3 */
type tagSTGMEDIUM = struct {
	tymed          DWORD
	__4            struct{ hBitmap HBITMAP }
	pUnkForRelease uintptr
} /* objidl.h:11390:9 */

type uSTGMEDIUM = tagSTGMEDIUM /* objidl.h:11402:3 */
type _GDI_OBJECT = struct {
	ObjectType DWORD
	u          struct{ hBitmap wireHBITMAP }
} /* objidl.h:11404:9 */

type GDI_OBJECT = _GDI_OBJECT /* objidl.h:11411:3 */
type _userSTGMEDIUM = struct {
	__0 struct {
		tymed DWORD
		u     struct{ hMetaFilePict wireHMETAFILEPICT }
	}
	pUnkForRelease uintptr
} /* objidl.h:11412:9 */

type _STGMEDIUM_UNION = struct {
	tymed DWORD
	u     struct{ hMetaFilePict wireHMETAFILEPICT }
} /* objidl.h:11412:9 */

type userSTGMEDIUM = _userSTGMEDIUM /* objidl.h:11426:3 */
type wireSTGMEDIUM = uintptr        /* objidl.h:11427:23 */
type STGMEDIUM = uSTGMEDIUM         /* objidl.h:11428:20 */
type wireASYNC_STGMEDIUM = uintptr  /* objidl.h:11429:23 */
type ASYNC_STGMEDIUM = STGMEDIUM    /* objidl.h:11430:19 */
type LPSTGMEDIUM = uintptr          /* objidl.h:11431:19 */
type _userFLAG_STGMEDIUM = struct {
	ContextFlags   LONG
	fPassOwnership LONG
	Stgmed         userSTGMEDIUM
} /* objidl.h:11432:9 */

type userFLAG_STGMEDIUM = _userFLAG_STGMEDIUM /* objidl.h:11436:3 */
type wireFLAG_STGMEDIUM = uintptr             /* objidl.h:11437:28 */
type _FLAG_STGMEDIUM = struct {
	ContextFlags   LONG
	fPassOwnership LONG
	Stgmed         STGMEDIUM
} /* objidl.h:11438:9 */

type FLAG_STGMEDIUM = _FLAG_STGMEDIUM /* objidl.h:11442:3 */
type IAdviseSinkVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	OnDataChange   uintptr
	OnViewChange   uintptr
	OnRename       uintptr
	OnSave         uintptr
	OnClose        uintptr
} /* objidl.h:362:9 */

type IAdviseSinkVtbl = IAdviseSinkVtbl1 /* objidl.h:11507:3 */
type AsyncIAdviseSinkVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	Begin_OnDataChange  uintptr
	Finish_OnDataChange uintptr
	Begin_OnViewChange  uintptr
	Finish_OnViewChange uintptr
	Begin_OnRename      uintptr
	Finish_OnRename     uintptr
	Begin_OnSave        uintptr
	Finish_OnSave       uintptr
	Begin_OnClose       uintptr
	Finish_OnClose      uintptr
} /* objidl.h:367:9 */

type AsyncIAdviseSinkVtbl = AsyncIAdviseSinkVtbl1 /* objidl.h:11729:3 */

// ****************************************************************************
//
// IAdviseSink2 interface

type LPADVISESINK2 = uintptr /* objidl.h:11944:22 */
type IAdviseSink2Vtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	OnDataChange    uintptr
	OnViewChange    uintptr
	OnRename        uintptr
	OnSave          uintptr
	OnClose         uintptr
	OnLinkSrcChange uintptr
} /* objidl.h:372:9 */

type IAdviseSink2Vtbl = IAdviseSink2Vtbl1 /* objidl.h:12000:3 */
type AsyncIAdviseSink2Vtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	Begin_OnDataChange     uintptr
	Finish_OnDataChange    uintptr
	Begin_OnViewChange     uintptr
	Finish_OnViewChange    uintptr
	Begin_OnRename         uintptr
	Finish_OnRename        uintptr
	Begin_OnSave           uintptr
	Finish_OnSave          uintptr
	Begin_OnClose          uintptr
	Finish_OnClose         uintptr
	Begin_OnLinkSrcChange  uintptr
	Finish_OnLinkSrcChange uintptr
} /* objidl.h:377:9 */

type AsyncIAdviseSink2Vtbl = AsyncIAdviseSink2Vtbl1 /* objidl.h:12154:3 */

// ****************************************************************************
//
// IDataObject interface

type LPDATAOBJECT = uintptr /* objidl.h:12271:21 */
type DATADIR = uint32       /* objidl.h:12275:3 */
type IDataObjectVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetData               uintptr
	GetDataHere           uintptr
	QueryGetData          uintptr
	GetCanonicalFormatEtc uintptr
	SetData               uintptr
	EnumFormatEtc         uintptr
	DAdvise               uintptr
	DUnadvise             uintptr
	EnumDAdvise           uintptr
} /* objidl.h:382:9 */

type IDataObjectVtbl = IDataObjectVtbl1 /* objidl.h:12384:3 */

// ****************************************************************************
//
// IDataAdviseHolder interface

type LPDATAADVISEHOLDER = uintptr /* objidl.h:12567:27 */
type IDataAdviseHolderVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	Advise           uintptr
	Unadvise         uintptr
	EnumAdvise       uintptr
	SendOnDataChange uintptr
} /* objidl.h:387:9 */

type IDataAdviseHolderVtbl = IDataAdviseHolderVtbl1 /* objidl.h:12635:3 */

// ****************************************************************************
//
// IMessageFilter interface

type LPMESSAGEFILTER = uintptr /* objidl.h:12727:24 */
type CALLTYPE = uint32         /* objidl.h:12734:3 */
type SERVERCALL = uint32       /* objidl.h:12739:3 */
type PENDINGTYPE = uint32      /* objidl.h:12743:3 */
type PENDINGMSG = uint32       /* objidl.h:12748:3 */
type tagINTERFACEINFO = struct {
	pUnk    uintptr
	iid     IID
	wMethod WORD
	_       [2]byte
} /* objidl.h:12749:9 */

type INTERFACEINFO = tagINTERFACEINFO /* objidl.h:12753:3 */
type LPINTERFACEINFO = uintptr        /* objidl.h:12754:33 */
type IMessageFilterVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	HandleInComingCall uintptr
	RetryRejectedCall  uintptr
	MessagePending     uintptr
} /* objidl.h:392:9 */

type IMessageFilterVtbl = IMessageFilterVtbl1 /* objidl.h:12817:3 */
type IClassActivatorVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetClassObject uintptr
} /* objidl.h:397:9 */

type IClassActivatorVtbl = IClassActivatorVtbl1 /* objidl.h:12957:3 */
type IFillLockBytesVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	FillAppend     uintptr
	FillAt         uintptr
	SetFillSize    uintptr
	Terminate      uintptr
} /* objidl.h:402:9 */

type IFillLockBytesVtbl = IFillLockBytesVtbl1 /* objidl.h:13078:3 */
type IProgressNotifyVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	OnProgress     uintptr
} /* objidl.h:407:9 */

type IProgressNotifyVtbl = IProgressNotifyVtbl1 /* objidl.h:13233:3 */

// ****************************************************************************
//
// ILayoutStorage interface

type tagStorageLayout = struct {
	LayoutType      DWORD
	pwcsElementName uintptr
	cOffset         LARGE_INTEGER
	cBytes          LARGE_INTEGER
} /* objidl.h:13288:9 */

// ****************************************************************************
//
// ILayoutStorage interface

type StorageLayout = tagStorageLayout /* objidl.h:13293:3 */
type ILayoutStorageVtbl1 = struct {
	QueryInterface              uintptr
	AddRef                      uintptr
	Release                     uintptr
	LayoutScript                uintptr
	BeginMonitor                uintptr
	EndMonitor                  uintptr
	ReLayoutDocfile             uintptr
	ReLayoutDocfileOnILockBytes uintptr
} /* objidl.h:412:9 */

type ILayoutStorageVtbl = ILayoutStorageVtbl1 /* objidl.h:13358:3 */
type IBlockingLockVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Lock           uintptr
	Unlock         uintptr
} /* objidl.h:417:9 */

type IBlockingLockVtbl = IBlockingLockVtbl1 /* objidl.h:13498:3 */
type ITimeAndNoticeControlVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	SuppressChanges uintptr
} /* objidl.h:422:9 */

type ITimeAndNoticeControlVtbl = ITimeAndNoticeControlVtbl1 /* objidl.h:13595:3 */
type IOplockStorageVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	CreateStorageEx uintptr
	OpenStorageEx   uintptr
} /* objidl.h:427:9 */

type IOplockStorageVtbl = IOplockStorageVtbl1 /* objidl.h:13707:3 */
type IDirectWriterLockVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	WaitForWriteAccess uintptr
	ReleaseWriteAccess uintptr
	HaveWriteAccess    uintptr
} /* objidl.h:432:9 */

type IDirectWriterLockVtbl = IDirectWriterLockVtbl1 /* objidl.h:13827:3 */
type IUrlMonVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	AsyncGetClassBits uintptr
} /* objidl.h:437:9 */

type IUrlMonVtbl = IUrlMonVtbl1 /* objidl.h:13953:3 */
type IForegroundTransferVtbl1 = struct {
	QueryInterface          uintptr
	AddRef                  uintptr
	Release                 uintptr
	AllowForegroundTransfer uintptr
} /* objidl.h:442:9 */

type IForegroundTransferVtbl = IForegroundTransferVtbl1 /* objidl.h:14046:3 */
type IThumbnailExtractorVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	ExtractThumbnail uintptr
	OnFileUpdated    uintptr
} /* objidl.h:447:9 */

type IThumbnailExtractorVtbl = IThumbnailExtractorVtbl1 /* objidl.h:14147:3 */
type IDummyHICONIncluderVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Dummy          uintptr
} /* objidl.h:452:9 */

type IDummyHICONIncluderVtbl = IDummyHICONIncluderVtbl1 /* objidl.h:14250:3 */

type ApplicationType = uint32 /* objidl.h:14298:3 */
type ShutdownType = uint32    /* objidl.h:14302:3 */
type IProcessLockVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	AddRefOnProcess     uintptr
	ReleaseRefOnProcess uintptr
} /* objidl.h:457:9 */

type IProcessLockVtbl = IProcessLockVtbl1 /* objidl.h:14348:3 */
type ISurrogateServiceVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	Init              uintptr
	ApplicationLaunch uintptr
	ApplicationFree   uintptr
	CatalogRefresh    uintptr
	ProcessShutdown   uintptr
} /* objidl.h:462:9 */

type ISurrogateServiceVtbl = ISurrogateServiceVtbl1 /* objidl.h:14476:3 */

// ****************************************************************************
//
// IInitializeSpy interface

type LPINITIALIZESPY = uintptr /* objidl.h:14577:24 */
type IInitializeSpyVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	PreInitialize    uintptr
	PostInitialize   uintptr
	PreUninitialize  uintptr
	PostUninitialize uintptr
} /* objidl.h:467:9 */

type IInitializeSpyVtbl = IInitializeSpyVtbl1 /* objidl.h:14639:3 */
type IApartmentShutdownVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	OnUninitialize uintptr
} /* objidl.h:472:9 */

type IApartmentShutdownVtbl = IApartmentShutdownVtbl1 /* objidl.h:14764:3 */

type COMSD = uint32 /* objbase.h:92:3 */

type tagSTGOPTIONS = struct {
	usVersion        USHORT
	reserved         USHORT
	ulSectorSize     ULONG
	pwcsTemplateFile uintptr
} /* objbase.h:130:9 */

type STGOPTIONS = tagSTGOPTIONS /* objbase.h:137:3 */

//** Autogenerated by WIDL 1.6 from include/urlmon.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IPersistMoniker1 = struct{ lpVtbl uintptr } /* urlmon.h:22:9 */

//** Autogenerated by WIDL 1.6 from include/urlmon.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IPersistMoniker = IPersistMoniker1 /* urlmon.h:22:35 */

type IMonikerProp1 = struct{ lpVtbl uintptr } /* urlmon.h:27:9 */

type IMonikerProp = IMonikerProp1 /* urlmon.h:27:32 */

type IBindProtocol1 = struct{ lpVtbl uintptr } /* urlmon.h:32:9 */

type IBindProtocol = IBindProtocol1 /* urlmon.h:32:33 */

type IBinding1 = struct{ lpVtbl uintptr } /* urlmon.h:37:9 */

type IBinding = IBinding1 /* urlmon.h:37:28 */

type IBindStatusCallback1 = struct{ lpVtbl uintptr } /* urlmon.h:42:9 */

type IBindStatusCallback = IBindStatusCallback1 /* urlmon.h:42:39 */

type IBindStatusCallbackEx1 = struct{ lpVtbl uintptr } /* urlmon.h:47:9 */

type IBindStatusCallbackEx = IBindStatusCallbackEx1 /* urlmon.h:47:41 */

type IAuthenticate1 = struct{ lpVtbl uintptr } /* urlmon.h:52:9 */

type IAuthenticate = IAuthenticate1 /* urlmon.h:52:33 */

type IAuthenticateEx1 = struct{ lpVtbl uintptr } /* urlmon.h:57:9 */

type IAuthenticateEx = IAuthenticateEx1 /* urlmon.h:57:35 */

type IHttpNegotiate1 = struct{ lpVtbl uintptr } /* urlmon.h:62:9 */

type IHttpNegotiate = IHttpNegotiate1 /* urlmon.h:62:34 */

type IHttpNegotiate21 = struct{ lpVtbl uintptr } /* urlmon.h:67:9 */

type IHttpNegotiate2 = IHttpNegotiate21 /* urlmon.h:67:35 */

type IHttpNegotiate31 = struct{ lpVtbl uintptr } /* urlmon.h:72:9 */

type IHttpNegotiate3 = IHttpNegotiate31 /* urlmon.h:72:35 */

type IWinInetFileStream1 = struct{ lpVtbl uintptr } /* urlmon.h:77:9 */

type IWinInetFileStream = IWinInetFileStream1 /* urlmon.h:77:38 */

type IWindowForBindingUI1 = struct{ lpVtbl uintptr } /* urlmon.h:82:9 */

type IWindowForBindingUI = IWindowForBindingUI1 /* urlmon.h:82:39 */

type ICodeInstall1 = struct{ lpVtbl uintptr } /* urlmon.h:87:9 */

type ICodeInstall = ICodeInstall1 /* urlmon.h:87:32 */

type IWinInetInfo1 = struct{ lpVtbl uintptr } /* urlmon.h:112:9 */

type IWinInetInfo = IWinInetInfo1 /* urlmon.h:112:32 */

type IHttpSecurity1 = struct{ lpVtbl uintptr } /* urlmon.h:117:9 */

type IHttpSecurity = IHttpSecurity1 /* urlmon.h:117:33 */

type IWinInetHttpInfo1 = struct{ lpVtbl uintptr } /* urlmon.h:122:9 */

type IWinInetHttpInfo = IWinInetHttpInfo1 /* urlmon.h:122:36 */

type IWinInetHttpTimeouts1 = struct{ lpVtbl uintptr } /* urlmon.h:127:9 */

type IWinInetHttpTimeouts = IWinInetHttpTimeouts1 /* urlmon.h:127:40 */

type IBindHost1 = struct{ lpVtbl uintptr } /* urlmon.h:142:9 */

type IBindHost = IBindHost1 /* urlmon.h:142:29 */

type IInternet1 = struct{ lpVtbl uintptr } /* urlmon.h:147:9 */

type IInternet = IInternet1 /* urlmon.h:147:29 */

type IInternetBindInfo1 = struct{ lpVtbl uintptr } /* urlmon.h:152:9 */

type IInternetBindInfo = IInternetBindInfo1 /* urlmon.h:152:37 */

type IInternetBindInfoEx1 = struct{ lpVtbl uintptr } /* urlmon.h:157:9 */

type IInternetBindInfoEx = IInternetBindInfoEx1 /* urlmon.h:157:39 */

type IInternetProtocolRoot1 = struct{ lpVtbl uintptr } /* urlmon.h:162:9 */

type IInternetProtocolRoot = IInternetProtocolRoot1 /* urlmon.h:162:41 */

type IInternetProtocol1 = struct{ lpVtbl uintptr } /* urlmon.h:167:9 */

type IInternetProtocol = IInternetProtocol1 /* urlmon.h:167:37 */

type IInternetProtocolSink1 = struct{ lpVtbl uintptr } /* urlmon.h:177:9 */

type IInternetProtocolSink = IInternetProtocolSink1 /* urlmon.h:177:41 */

type IInternetProtocolSinkStackable1 = struct{ lpVtbl uintptr } /* urlmon.h:182:9 */

type IInternetProtocolSinkStackable = IInternetProtocolSinkStackable1 /* urlmon.h:182:50 */

type IInternetSession1 = struct{ lpVtbl uintptr } /* urlmon.h:187:9 */

type IInternetSession = IInternetSession1 /* urlmon.h:187:36 */

type IInternetThreadSwitch1 = struct{ lpVtbl uintptr } /* urlmon.h:192:9 */

type IInternetThreadSwitch = IInternetThreadSwitch1 /* urlmon.h:192:41 */

type IInternetPriority1 = struct{ lpVtbl uintptr } /* urlmon.h:197:9 */

type IInternetPriority = IInternetPriority1 /* urlmon.h:197:37 */

type IInternetProtocolInfo1 = struct{ lpVtbl uintptr } /* urlmon.h:202:9 */

type IInternetProtocolInfo = IInternetProtocolInfo1 /* urlmon.h:202:41 */

type IInternetSecurityMgrSite1 = struct{ lpVtbl uintptr } /* urlmon.h:207:9 */

type IInternetSecurityMgrSite = IInternetSecurityMgrSite1 /* urlmon.h:207:44 */

type IInternetSecurityManager1 = struct{ lpVtbl uintptr } /* urlmon.h:212:9 */

type IInternetSecurityManager = IInternetSecurityManager1 /* urlmon.h:212:44 */

type IInternetHostSecurityManager1 = struct{ lpVtbl uintptr } /* urlmon.h:232:9 */

type IInternetHostSecurityManager = IInternetHostSecurityManager1 /* urlmon.h:232:48 */

type IInternetZoneManager1 = struct{ lpVtbl uintptr } /* urlmon.h:237:9 */

type IInternetZoneManager = IInternetZoneManager1 /* urlmon.h:237:40 */

type ISoftDistExt1 = struct{ lpVtbl uintptr } /* urlmon.h:252:9 */

type ISoftDistExt = ISoftDistExt1 /* urlmon.h:252:32 */

type ICatalogFileInfo1 = struct{ lpVtbl uintptr } /* urlmon.h:257:9 */

type ICatalogFileInfo = ICatalogFileInfo1 /* urlmon.h:257:36 */

type IDataFilter1 = struct{ lpVtbl uintptr } /* urlmon.h:262:9 */

type IDataFilter = IDataFilter1 /* urlmon.h:262:31 */

type IEncodingFilterFactory1 = struct{ lpVtbl uintptr } /* urlmon.h:267:9 */

type IEncodingFilterFactory = IEncodingFilterFactory1 /* urlmon.h:267:42 */

type IWrappedProtocol1 = struct{ lpVtbl uintptr } /* urlmon.h:272:9 */

type IWrappedProtocol = IWrappedProtocol1 /* urlmon.h:272:36 */

type IGetBindHandle1 = struct{ lpVtbl uintptr } /* urlmon.h:277:9 */

type IGetBindHandle = IGetBindHandle1 /* urlmon.h:277:34 */

type IBindCallbackRedirect1 = struct{ lpVtbl uintptr } /* urlmon.h:282:9 */

type IBindCallbackRedirect = IBindCallbackRedirect1 /* urlmon.h:282:41 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oleidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IOleAdviseHolder1 = struct{ lpVtbl uintptr } /* oleidl.h:22:9 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oleidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IOleAdviseHolder = IOleAdviseHolder1 /* oleidl.h:22:36 */

type IOleCache1 = struct{ lpVtbl uintptr } /* oleidl.h:27:9 */

type IOleCache = IOleCache1 /* oleidl.h:27:29 */

type IOleCache21 = struct{ lpVtbl uintptr } /* oleidl.h:32:9 */

type IOleCache2 = IOleCache21 /* oleidl.h:32:30 */

type IOleCacheControl1 = struct{ lpVtbl uintptr } /* oleidl.h:37:9 */

type IOleCacheControl = IOleCacheControl1 /* oleidl.h:37:36 */

type IParseDisplayName1 = struct{ lpVtbl uintptr } /* oleidl.h:42:9 */

type IParseDisplayName = IParseDisplayName1 /* oleidl.h:42:37 */

type IOleContainer1 = struct{ lpVtbl uintptr } /* oleidl.h:47:9 */

type IOleContainer = IOleContainer1 /* oleidl.h:47:33 */

type IOleClientSite1 = struct{ lpVtbl uintptr } /* oleidl.h:52:9 */

type IOleClientSite = IOleClientSite1 /* oleidl.h:52:34 */

type IOleObject1 = struct{ lpVtbl uintptr } /* oleidl.h:57:9 */

type IOleObject = IOleObject1 /* oleidl.h:57:30 */

type IOleWindow1 = struct{ lpVtbl uintptr } /* oleidl.h:62:9 */

type IOleWindow = IOleWindow1 /* oleidl.h:62:30 */

type IOleLink1 = struct{ lpVtbl uintptr } /* oleidl.h:67:9 */

type IOleLink = IOleLink1 /* oleidl.h:67:28 */

type IOleItemContainer1 = struct{ lpVtbl uintptr } /* oleidl.h:72:9 */

type IOleItemContainer = IOleItemContainer1 /* oleidl.h:72:37 */

type IOleInPlaceUIWindow1 = struct{ lpVtbl uintptr } /* oleidl.h:77:9 */

type IOleInPlaceUIWindow = IOleInPlaceUIWindow1 /* oleidl.h:77:39 */

type IOleInPlaceActiveObject1 = struct{ lpVtbl uintptr } /* oleidl.h:82:9 */

type IOleInPlaceActiveObject = IOleInPlaceActiveObject1 /* oleidl.h:82:43 */

type IOleInPlaceFrame1 = struct{ lpVtbl uintptr } /* oleidl.h:87:9 */

type IOleInPlaceFrame = IOleInPlaceFrame1 /* oleidl.h:87:36 */

type IOleInPlaceObject1 = struct{ lpVtbl uintptr } /* oleidl.h:92:9 */

type IOleInPlaceObject = IOleInPlaceObject1 /* oleidl.h:92:37 */

type IOleInPlaceSite1 = struct{ lpVtbl uintptr } /* oleidl.h:97:9 */

type IOleInPlaceSite = IOleInPlaceSite1 /* oleidl.h:97:35 */

type IContinue1 = struct{ lpVtbl uintptr } /* oleidl.h:102:9 */

type IContinue = IContinue1 /* oleidl.h:102:29 */

type IViewObject1 = struct{ lpVtbl uintptr } /* oleidl.h:107:9 */

type IViewObject = IViewObject1 /* oleidl.h:107:31 */

type IViewObject21 = struct{ lpVtbl uintptr } /* oleidl.h:112:9 */

type IViewObject2 = IViewObject21 /* oleidl.h:112:32 */

type IDropSource1 = struct{ lpVtbl uintptr } /* oleidl.h:117:9 */

type IDropSource = IDropSource1 /* oleidl.h:117:31 */

type IDropTarget1 = struct{ lpVtbl uintptr } /* oleidl.h:122:9 */

type IDropTarget = IDropTarget1 /* oleidl.h:122:31 */

type IDropSourceNotify1 = struct{ lpVtbl uintptr } /* oleidl.h:127:9 */

type IDropSourceNotify = IDropSourceNotify1 /* oleidl.h:127:37 */

type IEnumOLEVERB1 = struct{ lpVtbl uintptr } /* oleidl.h:132:9 */

type IEnumOLEVERB = IEnumOLEVERB1 /* oleidl.h:132:32 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// ****************************************************************************
//
// IOleAdviseHolder interface

type LPOLEADVISEHOLDER = uintptr /* oleidl.h:169:26 */
type IOleAdviseHolderVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Advise         uintptr
	Unadvise       uintptr
	EnumAdvise     uintptr
	SendOnRename   uintptr
	SendOnSave     uintptr
	SendOnClose    uintptr
} /* oleidl.h:22:9 */

type IOleAdviseHolderVtbl = IOleAdviseHolderVtbl1 /* oleidl.h:240:3 */

// ****************************************************************************
//
// IOleCache interface

type LPOLECACHE = uintptr /* oleidl.h:352:19 */
type IOleCacheVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Cache          uintptr
	Uncache        uintptr
	EnumCache      uintptr
	InitCache      uintptr
	SetData        uintptr
} /* oleidl.h:27:9 */

type IOleCacheVtbl = IOleCacheVtbl1 /* oleidl.h:424:3 */

// ****************************************************************************
//
// IOleCache2 interface

type LPOLECACHE2 = uintptr /* oleidl.h:527:20 */

type DISCARDCACHE = uint32 /* oleidl.h:551:3 */
type IOleCache2Vtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Cache          uintptr
	Uncache        uintptr
	EnumCache      uintptr
	InitCache      uintptr
	SetData        uintptr
	UpdateCache    uintptr
	DiscardCache   uintptr
} /* oleidl.h:32:9 */

type IOleCache2Vtbl = IOleCache2Vtbl1 /* oleidl.h:623:3 */

// ****************************************************************************
//
// IOleCacheControl interface

type LPOLECACHECONTROL = uintptr /* oleidl.h:722:26 */
type IOleCacheControlVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	OnRun          uintptr
	OnStop         uintptr
} /* oleidl.h:37:9 */

type IOleCacheControlVtbl = IOleCacheControlVtbl1 /* oleidl.h:764:3 */

// ****************************************************************************
//
// IParseDisplayName interface

type LPPARSEDISPLAYNAME = uintptr /* oleidl.h:826:27 */
type IParseDisplayNameVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	ParseDisplayName uintptr
} /* oleidl.h:42:9 */

type IParseDisplayNameVtbl = IParseDisplayNameVtbl1 /* oleidl.h:868:3 */

// ****************************************************************************
//
// IOleContainer interface

type LPOLECONTAINER = uintptr /* oleidl.h:922:23 */
type IOleContainerVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	ParseDisplayName uintptr
	EnumObjects      uintptr
	LockContainer    uintptr
} /* oleidl.h:47:9 */

type IOleContainerVtbl = IOleContainerVtbl1 /* oleidl.h:975:3 */

// ****************************************************************************
//
// IOleClientSite interface

type LPOLECLIENTSITE = uintptr /* oleidl.h:1045:24 */
type IOleClientSiteVtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	SaveObject             uintptr
	GetMoniker             uintptr
	GetContainer           uintptr
	ShowObject             uintptr
	OnShowWindow           uintptr
	RequestNewObjectLayout uintptr
} /* oleidl.h:52:9 */

type IOleClientSiteVtbl = IOleClientSiteVtbl1 /* oleidl.h:1117:3 */

// ****************************************************************************
//
// IOleObject interface

type LPOLEOBJECT = uintptr /* oleidl.h:1227:20 */

type OLEGETMONIKER = uint32 /* oleidl.h:1234:3 */

type OLEWHICHMK = uint32 /* oleidl.h:1240:3 */

type USERCLASSTYPE = uint32 /* oleidl.h:1246:3 */

type OLEMISC = uint32  /* oleidl.h:1271:3 */
type OLECLOSE = uint32 /* oleidl.h:1276:3 */
type IOleObjectVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	SetClientSite    uintptr
	GetClientSite    uintptr
	SetHostNames     uintptr
	Close            uintptr
	SetMoniker       uintptr
	GetMoniker       uintptr
	InitFromData     uintptr
	GetClipboardData uintptr
	DoVerb           uintptr
	EnumVerbs        uintptr
	Update           uintptr
	IsUpToDate       uintptr
	GetUserClassID   uintptr
	GetUserType      uintptr
	SetExtent        uintptr
	GetExtent        uintptr
	Advise           uintptr
	Unadvise         uintptr
	EnumAdvise       uintptr
	GetMiscStatus    uintptr
	SetColorScheme   uintptr
} /* oleidl.h:57:9 */

type IOleObjectVtbl = IOleObjectVtbl1 /* oleidl.h:1484:3 */
type OLERENDER = uint32               /* oleidl.h:1797:3 */

type LPOLERENDER = uintptr /* oleidl.h:1799:19 */

type tagOBJECTDESCRIPTOR = struct {
	cbSize             ULONG
	clsid              CLSID
	dwDrawAspect       DWORD
	sizel              SIZEL
	pointl             POINTL
	dwStatus           DWORD
	dwFullUserTypeName DWORD
	dwSrcOfCopy        DWORD
} /* oleidl.h:1801:9 */

type OBJECTDESCRIPTOR = tagOBJECTDESCRIPTOR  /* oleidl.h:1810:3 */
type POBJECTDESCRIPTOR = uintptr             /* oleidl.h:1811:36 */
type LPOBJECTDESCRIPTOR = uintptr            /* oleidl.h:1812:36 */
type LINKSRCDESCRIPTOR = tagOBJECTDESCRIPTOR /* oleidl.h:1813:36 */
type PLINKSRCDESCRIPTOR = uintptr            /* oleidl.h:1814:36 */
type LPLINKSRCDESCRIPTOR = uintptr           /* oleidl.h:1815:36 */

// ****************************************************************************
//
// IOleWindow interface

type LPOLEWINDOW = uintptr /* oleidl.h:1826:20 */
type IOleWindowVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetWindow            uintptr
	ContextSensitiveHelp uintptr
} /* oleidl.h:62:9 */

type IOleWindowVtbl = IOleWindowVtbl1 /* oleidl.h:1869:3 */

// ****************************************************************************
//
// IOleLink interface

type LPOLELINK = uintptr /* oleidl.h:1932:18 */

type OLEUPDATE = uint32 /* oleidl.h:1937:3 */

type LPOLEUPDATE = uintptr /* oleidl.h:1939:19 */
type POLEUPDATE = uintptr  /* oleidl.h:1940:19 */

type OLELINKBIND = uint32 /* oleidl.h:1944:3 */
type IOleLinkVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	SetUpdateOptions     uintptr
	GetUpdateOptions     uintptr
	SetSourceMoniker     uintptr
	GetSourceMoniker     uintptr
	SetSourceDisplayName uintptr
	GetSourceDisplayName uintptr
	BindToSource         uintptr
	BindIfRunning        uintptr
	GetBoundSource       uintptr
	UnbindSource         uintptr
	Update               uintptr
} /* oleidl.h:67:9 */

type IOleLinkVtbl = IOleLinkVtbl1 /* oleidl.h:2052:3 */

// ****************************************************************************
//
// IOleItemContainer interface

type LPOLEITEMCONTAINER = uintptr /* oleidl.h:2223:27 */

type BINDSPEED = uint32 /* oleidl.h:2229:3 */

type OLECONTF = uint32 /* oleidl.h:2237:3 */
type IOleItemContainerVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	ParseDisplayName uintptr
	EnumObjects      uintptr
	LockContainer    uintptr
	GetObjectW       uintptr
	GetObjectStorage uintptr
	IsRunning        uintptr
} /* oleidl.h:72:9 */

type IOleItemContainerVtbl = IOleItemContainerVtbl1 /* oleidl.h:2319:3 */

// ****************************************************************************
//
// IOleInPlaceUIWindow interface

type LPOLEINPLACEUIWINDOW = uintptr /* oleidl.h:2417:29 */
type BORDERWIDTHS = RECT            /* oleidl.h:2418:14 */
type LPBORDERWIDTHS = LPRECT        /* oleidl.h:2419:16 */
type LPCBORDERWIDTHS = LPCRECT      /* oleidl.h:2420:17 */
type IOleInPlaceUIWindowVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetWindow            uintptr
	ContextSensitiveHelp uintptr
	GetBorder            uintptr
	RequestBorderSpace   uintptr
	SetBorderSpace       uintptr
	SetActiveObject      uintptr
} /* oleidl.h:77:9 */

type IOleInPlaceUIWindowVtbl = IOleInPlaceUIWindowVtbl1 /* oleidl.h:2488:3 */

// ****************************************************************************
//
// IOleInPlaceActiveObject interface

type LPOLEINPLACEACTIVEOBJECT = uintptr /* oleidl.h:2586:33 */
type IOleInPlaceActiveObjectVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetWindow             uintptr
	ContextSensitiveHelp  uintptr
	TranslateAcceleratorW uintptr
	OnFrameWindowActivate uintptr
	OnDocWindowActivate   uintptr
	ResizeBorder          uintptr
	EnableModeless        uintptr
} /* oleidl.h:82:9 */

type IOleInPlaceActiveObjectVtbl = IOleInPlaceActiveObjectVtbl1 /* oleidl.h:2663:3 */

// ****************************************************************************
//
// IOleInPlaceFrame interface

type LPOLEINPLACEFRAME = uintptr /* oleidl.h:2790:26 */

type tagOIFI = struct {
	cb            UINT
	fMDIApp       WINBOOL
	hwndFrame     HWND
	haccel        HACCEL
	cAccelEntries UINT
} /* oleidl.h:2792:9 */

type OLEINPLACEFRAMEINFO = tagOIFI   /* oleidl.h:2798:3 */
type LPOLEINPLACEFRAMEINFO = uintptr /* oleidl.h:2799:24 */

type tagOleMenuGroupWidths = struct{ width [6]LONG } /* oleidl.h:2801:9 */

type OLEMENUGROUPWIDTHS = tagOleMenuGroupWidths /* oleidl.h:2803:3 */
type LPOLEMENUGROUPWIDTHS = uintptr             /* oleidl.h:2804:38 */

type HOLEMENU = HGLOBAL /* oleidl.h:2806:17 */
type IOleInPlaceFrameVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetWindow             uintptr
	ContextSensitiveHelp  uintptr
	GetBorder             uintptr
	RequestBorderSpace    uintptr
	SetBorderSpace        uintptr
	SetActiveObject       uintptr
	InsertMenus           uintptr
	SetMenu               uintptr
	RemoveMenus           uintptr
	SetStatusText         uintptr
	EnableModeless        uintptr
	TranslateAcceleratorW uintptr
} /* oleidl.h:87:9 */

type IOleInPlaceFrameVtbl = IOleInPlaceFrameVtbl1 /* oleidl.h:2912:3 */

// ****************************************************************************
//
// IOleInPlaceObject interface

type LPOLEINPLACEOBJECT = uintptr /* oleidl.h:3055:27 */
type IOleInPlaceObjectVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetWindow            uintptr
	ContextSensitiveHelp uintptr
	InPlaceDeactivate    uintptr
	UIDeactivate         uintptr
	SetObjectRects       uintptr
	ReactivateAndUndo    uintptr
} /* oleidl.h:92:9 */

type IOleInPlaceObjectVtbl = IOleInPlaceObjectVtbl1 /* oleidl.h:3120:3 */

// ****************************************************************************
//
// IOleInPlaceSite interface

type LPOLEINPLACESITE = uintptr /* oleidl.h:3215:25 */
type IOleInPlaceSiteVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetWindow            uintptr
	ContextSensitiveHelp uintptr
	CanInPlaceActivate   uintptr
	OnInPlaceActivate    uintptr
	OnUIActivate         uintptr
	GetWindowContext     uintptr
	Scroll               uintptr
	OnUIDeactivate       uintptr
	OnInPlaceDeactivate  uintptr
	DiscardUndoState     uintptr
	DeactivateAndUndo    uintptr
	OnPosRectChange      uintptr
} /* oleidl.h:97:9 */

type IOleInPlaceSiteVtbl = IOleInPlaceSiteVtbl1 /* oleidl.h:3325:3 */
type IContinueVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	FContinue      uintptr
} /* oleidl.h:102:9 */

type IContinueVtbl = IContinueVtbl1 /* oleidl.h:3525:3 */

// ****************************************************************************
//
// IViewObject interface

type LPVIEWOBJECT = uintptr /* oleidl.h:3575:21 */
type IViewObjectVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Draw           uintptr
	GetColorSet    uintptr
	Freeze         uintptr
	Unfreeze       uintptr
	SetAdvise      uintptr
	GetAdvise      uintptr
} /* oleidl.h:107:9 */

type IViewObjectVtbl = IViewObjectVtbl1 /* oleidl.h:3688:3 */

// ****************************************************************************
//
// IViewObject2 interface

type LPVIEWOBJECT2 = uintptr /* oleidl.h:3880:22 */
type IViewObject2Vtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Draw           uintptr
	GetColorSet    uintptr
	Freeze         uintptr
	Unfreeze       uintptr
	SetAdvise      uintptr
	GetAdvise      uintptr
	GetExtent      uintptr
} /* oleidl.h:112:9 */

type IViewObject2Vtbl = IViewObject2Vtbl1 /* oleidl.h:3968:3 */

// ****************************************************************************
//
// IDropSource interface

type LPDROPSOURCE = uintptr /* oleidl.h:4048:21 */
type IDropSourceVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	QueryContinueDrag uintptr
	GiveFeedback      uintptr
} /* oleidl.h:117:9 */

type IDropSourceVtbl = IDropSourceVtbl1 /* oleidl.h:4093:3 */

// ****************************************************************************
//
// IDropTarget interface

type LPDROPTARGET = uintptr /* oleidl.h:4157:21 */
type IDropTargetVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	DragEnter      uintptr
	DragOver       uintptr
	DragLeave      uintptr
	Drop           uintptr
} /* oleidl.h:122:9 */

type IDropTargetVtbl = IDropTargetVtbl1 /* oleidl.h:4257:3 */
type IDropSourceNotifyVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	DragEnterTarget uintptr
	DragLeaveTarget uintptr
} /* oleidl.h:127:9 */

type IDropSourceNotifyVtbl = IDropSourceNotifyVtbl1 /* oleidl.h:4391:3 */

// ****************************************************************************
//
// IEnumOLEVERB interface

type LPENUMOLEVERB = uintptr /* oleidl.h:4455:22 */

type tagOLEVERB = struct {
	lVerb        LONG
	lpszVerbName LPOLESTR
	fuFlags      DWORD
	grfAttribs   DWORD
} /* oleidl.h:4457:9 */

type OLEVERB = tagOLEVERB /* oleidl.h:4462:3 */
type LPOLEVERB = uintptr  /* oleidl.h:4463:27 */

type OLEVERBATTRIB = uint32 /* oleidl.h:4468:3 */
type IEnumOLEVERBVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* oleidl.h:132:9 */

type IEnumOLEVERBVtbl = IEnumOLEVERBVtbl1 /* oleidl.h:4528:3 */

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/servprov.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IServiceProvider1 = struct{ lpVtbl uintptr } /* servprov.h:22:9 */

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/servprov.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IServiceProvider = IServiceProvider1 /* servprov.h:22:36 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// ****************************************************************************
//
// IServiceProvider interface

type LPSERVICEPROVIDER = uintptr /* servprov.h:55:26 */
type IServiceProviderVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	QueryService   uintptr
} /* servprov.h:22:9 */

type IServiceProviderVtbl = IServiceProviderVtbl1 /* servprov.h:115:3 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/msxml.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/unknwn.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oaidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type ICreateTypeInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:22:9 */

// Begin additional prototypes for all interfaces

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/msxml.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/unknwn.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oaidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type ICreateTypeInfo = ICreateTypeInfo1 /* oaidl.h:22:35 */

type ICreateTypeInfo21 = struct{ lpVtbl uintptr } /* oaidl.h:27:9 */

type ICreateTypeInfo2 = ICreateTypeInfo21 /* oaidl.h:27:36 */

type ICreateTypeLib1 = struct{ lpVtbl uintptr } /* oaidl.h:32:9 */

type ICreateTypeLib = ICreateTypeLib1 /* oaidl.h:32:34 */

type ICreateTypeLib21 = struct{ lpVtbl uintptr } /* oaidl.h:37:9 */

type ICreateTypeLib2 = ICreateTypeLib21 /* oaidl.h:37:35 */

type IDispatch1 = struct{ lpVtbl uintptr } /* oaidl.h:42:9 */

type IDispatch = IDispatch1 /* oaidl.h:42:29 */

type IEnumVARIANT1 = struct{ lpVtbl uintptr } /* oaidl.h:47:9 */

type IEnumVARIANT = IEnumVARIANT1 /* oaidl.h:47:32 */

type ITypeComp1 = struct{ lpVtbl uintptr } /* oaidl.h:52:9 */

type ITypeComp = ITypeComp1 /* oaidl.h:52:29 */

type ITypeInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:57:9 */

type ITypeInfo = ITypeInfo1 /* oaidl.h:57:29 */

type ITypeInfo21 = struct{ lpVtbl uintptr } /* oaidl.h:62:9 */

type ITypeInfo2 = ITypeInfo21 /* oaidl.h:62:30 */

type ITypeLib1 = struct{ lpVtbl uintptr } /* oaidl.h:67:9 */

type ITypeLib = ITypeLib1 /* oaidl.h:67:28 */

type ITypeLib21 = struct{ lpVtbl uintptr } /* oaidl.h:72:9 */

type ITypeLib2 = ITypeLib21 /* oaidl.h:72:29 */

type ITypeChangeEvents1 = struct{ lpVtbl uintptr } /* oaidl.h:77:9 */

type ITypeChangeEvents = ITypeChangeEvents1 /* oaidl.h:77:37 */

type IErrorInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:82:9 */

type IErrorInfo = IErrorInfo1 /* oaidl.h:82:30 */

type ICreateErrorInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:87:9 */

type ICreateErrorInfo = ICreateErrorInfo1 /* oaidl.h:87:36 */

type ISupportErrorInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:92:9 */

type ISupportErrorInfo = ISupportErrorInfo1 /* oaidl.h:92:37 */

type ITypeFactory1 = struct{ lpVtbl uintptr } /* oaidl.h:97:9 */

type ITypeFactory = ITypeFactory1 /* oaidl.h:97:32 */

type ITypeMarshal1 = struct{ lpVtbl uintptr } /* oaidl.h:102:9 */

type ITypeMarshal = ITypeMarshal1 /* oaidl.h:102:32 */

type IRecordInfo1 = struct{ lpVtbl uintptr } /* oaidl.h:107:9 */

type IRecordInfo = IRecordInfo1 /* oaidl.h:107:31 */

type IErrorLog1 = struct{ lpVtbl uintptr } /* oaidl.h:112:9 */

type IErrorLog = IErrorLog1 /* oaidl.h:112:29 */

type IPropertyBag1 = struct{ lpVtbl uintptr } /* oaidl.h:117:9 */

type IPropertyBag = IPropertyBag1 /* oaidl.h:117:32 */
type CURRENCY = CY                /* oaidl.h:243:12 */
type tagSAFEARRAYBOUND = struct {
	cElements ULONG
	lLbound   LONG
} /* oaidl.h:244:9 */

type SAFEARRAYBOUND = tagSAFEARRAYBOUND /* oaidl.h:247:3 */
type LPSAFEARRAYBOUND = uintptr         /* oaidl.h:248:34 */

type _wireVARIANT = struct {
	clSize      DWORD
	rpcReserved DWORD
	vt          USHORT
	wReserved1  USHORT
	wReserved2  USHORT
	wReserved3  USHORT
	__16        struct {
		llVal LONGLONG
		_     [8]byte
	}
} /* oaidl.h:250:9 */

type wireVARIANT = uintptr /* oaidl.h:250:29 */
type _wireBRECORD = struct {
	fFlags   ULONG
	clSize   ULONG
	pRecInfo uintptr
	pRecord  uintptr
} /* oaidl.h:251:9 */

type wireBRECORD = uintptr /* oaidl.h:251:29 */

type _wireSAFEARR_BSTR = struct {
	Size  ULONG
	aBstr uintptr
} /* oaidl.h:253:9 */

type SAFEARR_BSTR = _wireSAFEARR_BSTR /* oaidl.h:256:3 */

type _wireSAFEARR_UNKNOWN = struct {
	Size      ULONG
	apUnknown uintptr
} /* oaidl.h:258:9 */

type SAFEARR_UNKNOWN = _wireSAFEARR_UNKNOWN /* oaidl.h:261:3 */

type _wireSAFEARR_DISPATCH = struct {
	Size       ULONG
	apDispatch uintptr
} /* oaidl.h:263:9 */

type SAFEARR_DISPATCH = _wireSAFEARR_DISPATCH /* oaidl.h:266:3 */

type _wireSAFEARR_VARIANT = struct {
	Size     ULONG
	aVariant uintptr
} /* oaidl.h:268:9 */

type SAFEARR_VARIANT = _wireSAFEARR_VARIANT /* oaidl.h:271:3 */

type _wireSAFEARR_BRECORD = struct {
	Size    ULONG
	aRecord uintptr
} /* oaidl.h:273:9 */

type SAFEARR_BRECORD = _wireSAFEARR_BRECORD /* oaidl.h:276:3 */

type _wireSAFEARR_HAVEIID = struct {
	Size      ULONG
	apUnknown uintptr
	iid       IID
} /* oaidl.h:278:9 */

type SAFEARR_HAVEIID = _wireSAFEARR_HAVEIID /* oaidl.h:282:3 */

type SF_TYPE = uint32 /* oaidl.h:296:3 */

type _wireSAFEARRAY_UNION = struct {
	sfType ULONG
	u      struct {
		BstrStr SAFEARR_BSTR
		_       [16]byte
	}
} /* oaidl.h:298:9 */

type SAFEARRAYUNION = _wireSAFEARRAY_UNION /* oaidl.h:312:3 */

type _wireSAFEARRAY = struct {
	cDims         USHORT
	fFeatures     USHORT
	cbElements    ULONG
	cLocks        ULONG
	uArrayStructs SAFEARRAYUNION
	rgsabound     [1]SAFEARRAYBOUND
} /* oaidl.h:314:9 */

type wireSAFEARRAY = uintptr  /* oaidl.h:321:3 */
type wirePSAFEARRAY = uintptr /* oaidl.h:322:23 */

type tagSAFEARRAY = struct {
	cDims      USHORT
	fFeatures  USHORT
	cbElements ULONG
	cLocks     ULONG
	pvData     PVOID
	rgsabound  [1]SAFEARRAYBOUND
} /* oaidl.h:324:9 */

type SAFEARRAY = tagSAFEARRAY /* oaidl.h:331:3 */
type LPSAFEARRAY = uintptr    /* oaidl.h:332:19 */

// Kludge for 3.0 release to disable new default-behavior.
// For now we define _FORCENAMELESSUNION.  For 4.0 this define
// will be removed.

type tagVARIANT = struct {
	__0 struct {
		__0 struct {
			vt         VARTYPE
			wReserved1 WORD
			wReserved2 WORD
			wReserved3 WORD
			__8        struct{ llVal LONGLONG }
		}
	}
} /* oaidl.h:380:9 */

// Kludge for 3.0 release to disable new default-behavior.
// For now we define _FORCENAMELESSUNION.  For 4.0 this define
// will be removed.

type VARIANT = tagVARIANT /* oaidl.h:380:27 */

type LPVARIANT = uintptr    /* oaidl.h:444:17 */
type VARIANTARG = VARIANT   /* oaidl.h:445:17 */
type LPVARIANTARG = uintptr /* oaidl.h:446:17 */

type DISPID = LONG     /* oaidl.h:525:14 */
type MEMBERID = DISPID /* oaidl.h:526:16 */
type HREFTYPE = DWORD  /* oaidl.h:527:15 */
type TYPEKIND = uint32 /* oaidl.h:538:3 */

type tagTYPEDESC = struct {
	__0 struct{ lptdesc uintptr }
	vt  VARTYPE
	_   [2]byte
} /* oaidl.h:540:9 */

type tagARRAYDESC = struct {
	tdescElem TYPEDESC
	cDims     USHORT
	_         [2]byte
	rgbounds  [1]SAFEARRAYBOUND
} /* oaidl.h:543:9 */

type TYPEDESC = tagTYPEDESC /* oaidl.h:547:3 */

type ARRAYDESC = tagARRAYDESC /* oaidl.h:553:3 */

type tagPARAMDESCEX = struct {
	cBytes          ULONG
	_               [4]byte
	varDefaultValue VARIANTARG
} /* oaidl.h:555:9 */

type PARAMDESCEX = tagPARAMDESCEX /* oaidl.h:558:3 */
type LPPARAMDESCEX = uintptr      /* oaidl.h:559:31 */

type tagPARAMDESC = struct {
	pparamdescex LPPARAMDESCEX
	wParamFlags  USHORT
	_            [2]byte
} /* oaidl.h:561:9 */

type PARAMDESC = tagPARAMDESC /* oaidl.h:564:3 */
type LPPARAMDESC = uintptr    /* oaidl.h:565:29 */

type tagIDLDESC = struct {
	dwReserved ULONG_PTR
	wIDLFlags  USHORT
	_          [2]byte
} /* oaidl.h:584:9 */

type IDLDESC = tagIDLDESC /* oaidl.h:587:3 */
type LPIDLDESC = uintptr  /* oaidl.h:588:27 */

type tagELEMDESC = struct {
	tdesc TYPEDESC
	__8   struct{ idldesc IDLDESC }
} /* oaidl.h:608:11 */

type ELEMDESC = tagELEMDESC /* oaidl.h:614:5 */
type LPELEMDESC = uintptr   /* oaidl.h:614:14 */

type tagTYPEATTR = struct {
	guid             GUID
	lcid             LCID
	dwReserved       DWORD
	memidConstructor MEMBERID
	memidDestructor  MEMBERID
	lpstrSchema      LPOLESTR
	cbSizeInstance   ULONG
	typekind         TYPEKIND
	cFuncs           WORD
	cVars            WORD
	cImplTypes       WORD
	cbSizeVft        WORD
	cbAlignment      WORD
	wTypeFlags       WORD
	wMajorVerNum     WORD
	wMinorVerNum     WORD
	tdescAlias       TYPEDESC
	idldescType      IDLDESC
} /* oaidl.h:617:9 */

type TYPEATTR = tagTYPEATTR /* oaidl.h:636:3 */
type LPTYPEATTR = uintptr   /* oaidl.h:637:28 */

type tagDISPPARAMS = struct {
	rgvarg            uintptr
	rgdispidNamedArgs uintptr
	cArgs             UINT
	cNamedArgs        UINT
} /* oaidl.h:639:9 */

type DISPPARAMS = tagDISPPARAMS /* oaidl.h:644:3 */

type tagEXCEPINFO = struct {
	wCode             WORD
	wReserved         WORD
	bstrSource        BSTR
	bstrDescription   BSTR
	bstrHelpFile      BSTR
	dwHelpContext     DWORD
	pvReserved        PVOID
	pfnDeferredFillIn uintptr
	scode             SCODE
} /* oaidl.h:659:11 */

type EXCEPINFO = tagEXCEPINFO /* oaidl.h:669:5 */
type LPEXCEPINFO = uintptr    /* oaidl.h:669:16 */

type CALLCONV = uint32 /* oaidl.h:684:3 */

type FUNCKIND = uint32 /* oaidl.h:692:3 */

type INVOKEKIND = uint32 /* oaidl.h:699:3 */

type tagFUNCDESC = struct {
	memid             MEMBERID
	lprgscode         uintptr
	lprgelemdescParam uintptr
	funckind          FUNCKIND
	invkind           INVOKEKIND
	callconv          CALLCONV
	cParams           SHORT
	cParamsOpt        SHORT
	oVft              SHORT
	cScodes           SHORT
	elemdescFunc      ELEMDESC
	wFuncFlags        WORD
	_                 [2]byte
} /* oaidl.h:701:9 */

type FUNCDESC = tagFUNCDESC /* oaidl.h:714:3 */
type LPFUNCDESC = uintptr   /* oaidl.h:715:28 */

type VARKIND = uint32 /* oaidl.h:722:3 */

type tagVARDESC = struct {
	memid       MEMBERID
	lpstrSchema LPOLESTR
	__8         struct{ oInst ULONG }
	elemdescVar ELEMDESC
	wVarFlags   WORD
	_           [2]byte
	varkind     VARKIND
} /* oaidl.h:733:9 */

type VARDESC = tagVARDESC /* oaidl.h:743:3 */
type LPVARDESC = uintptr  /* oaidl.h:744:27 */

type TYPEFLAGS = uint32 /* oaidl.h:762:3 */

type FUNCFLAGS = uint32 /* oaidl.h:778:3 */

type VARFLAGS = uint32 /* oaidl.h:794:3 */

type tagCLEANLOCALSTORAGE = struct {
	pInterface uintptr
	pStorage   PVOID
	flags      DWORD
} /* oaidl.h:796:9 */

type CLEANLOCALSTORAGE = tagCLEANLOCALSTORAGE /* oaidl.h:800:3 */

type tagCUSTDATAITEM = struct {
	guid     GUID
	varValue VARIANTARG
} /* oaidl.h:802:9 */

type CUSTDATAITEM = tagCUSTDATAITEM /* oaidl.h:805:3 */
type LPCUSTDATAITEM = uintptr       /* oaidl.h:806:32 */

type tagCUSTDATA = struct {
	cCustData   DWORD
	prgCustData LPCUSTDATAITEM
} /* oaidl.h:808:9 */

type CUSTDATA = tagCUSTDATA /* oaidl.h:811:3 */
type LPCUSTDATA = uintptr   /* oaidl.h:812:28 */

// ****************************************************************************
//
// ICreateTypeInfo interface

type LPCREATETYPEINFO = uintptr /* oaidl.h:825:25 */
type ICreateTypeInfoVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	SetGuid              uintptr
	SetTypeFlags         uintptr
	SetDocString         uintptr
	SetHelpContext       uintptr
	SetVersion           uintptr
	AddRefTypeInfo       uintptr
	AddFuncDesc          uintptr
	AddImplType          uintptr
	SetImplTypeFlags     uintptr
	SetAlignment         uintptr
	SetSchema            uintptr
	AddVarDesc           uintptr
	SetFuncAndParamNames uintptr
	SetVarName           uintptr
	SetTypeDescAlias     uintptr
	DefineFuncAsDllEntry uintptr
	SetFuncDocString     uintptr
	SetVarDocString      uintptr
	SetFuncHelpContext   uintptr
	SetVarHelpContext    uintptr
	SetMops              uintptr
	SetTypeIdldesc       uintptr
	LayOut               uintptr
} /* oaidl.h:22:9 */

type ICreateTypeInfoVtbl = ICreateTypeInfoVtbl1 /* oaidl.h:1046:3 */

// ****************************************************************************
//
// ICreateTypeInfo2 interface

type LPCREATETYPEINFO2 = uintptr /* oaidl.h:1376:26 */
type ICreateTypeInfo2Vtbl1 = struct {
	QueryInterface           uintptr
	AddRef                   uintptr
	Release                  uintptr
	SetGuid                  uintptr
	SetTypeFlags             uintptr
	SetDocString             uintptr
	SetHelpContext           uintptr
	SetVersion               uintptr
	AddRefTypeInfo           uintptr
	AddFuncDesc              uintptr
	AddImplType              uintptr
	SetImplTypeFlags         uintptr
	SetAlignment             uintptr
	SetSchema                uintptr
	AddVarDesc               uintptr
	SetFuncAndParamNames     uintptr
	SetVarName               uintptr
	SetTypeDescAlias         uintptr
	DefineFuncAsDllEntry     uintptr
	SetFuncDocString         uintptr
	SetVarDocString          uintptr
	SetFuncHelpContext       uintptr
	SetVarHelpContext        uintptr
	SetMops                  uintptr
	SetTypeIdldesc           uintptr
	LayOut                   uintptr
	DeleteFuncDesc           uintptr
	DeleteFuncDescByMemId    uintptr
	DeleteVarDesc            uintptr
	DeleteVarDescByMemId     uintptr
	DeleteImplType           uintptr
	SetCustData              uintptr
	SetFuncCustData          uintptr
	SetParamCustData         uintptr
	SetVarCustData           uintptr
	SetImplTypeCustData      uintptr
	SetHelpStringContext     uintptr
	SetFuncHelpStringContext uintptr
	SetVarHelpStringContext  uintptr
	Invalidate               uintptr
	SetName                  uintptr
} /* oaidl.h:27:9 */

type ICreateTypeInfo2Vtbl = ICreateTypeInfo2Vtbl1 /* oaidl.h:1643:3 */

// ****************************************************************************
//
// ICreateTypeLib interface

type LPCREATETYPELIB = uintptr /* oaidl.h:1968:24 */
type ICreateTypeLibVtbl1 = struct {
	QueryInterface  uintptr
	AddRef          uintptr
	Release         uintptr
	CreateTypeInfo  uintptr
	SetName         uintptr
	SetVersion      uintptr
	SetGuid         uintptr
	SetDocString    uintptr
	SetHelpFileName uintptr
	SetHelpContext  uintptr
	SetLcid         uintptr
	SetLibFlags     uintptr
	SaveAllChanges  uintptr
} /* oaidl.h:32:9 */

type ICreateTypeLibVtbl = ICreateTypeLibVtbl1 /* oaidl.h:2072:3 */

// ****************************************************************************
//
// ICreateTypeLib2 interface

type LPCREATETYPELIB2 = uintptr /* oaidl.h:2233:25 */
type ICreateTypeLib2Vtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	CreateTypeInfo       uintptr
	SetName              uintptr
	SetVersion           uintptr
	SetGuid              uintptr
	SetDocString         uintptr
	SetHelpFileName      uintptr
	SetHelpContext       uintptr
	SetLcid              uintptr
	SetLibFlags          uintptr
	SaveAllChanges       uintptr
	DeleteTypeInfo       uintptr
	SetCustData          uintptr
	SetHelpStringContext uintptr
	SetHelpStringDll     uintptr
} /* oaidl.h:37:9 */

type ICreateTypeLib2Vtbl = ICreateTypeLib2Vtbl1 /* oaidl.h:2334:3 */

// ****************************************************************************
//
// IDispatch interface

type LPDISPATCH = uintptr /* oaidl.h:2466:19 */
type IDispatchVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
} /* oaidl.h:42:9 */

type IDispatchVtbl = IDispatchVtbl1 /* oaidl.h:2567:3 */

// ****************************************************************************
//
// IEnumVARIANT interface

type LPENUMVARIANT = uintptr /* oaidl.h:2693:22 */
type IEnumVARIANTVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* oaidl.h:47:9 */

type IEnumVARIANTVtbl = IEnumVARIANTVtbl1 /* oaidl.h:2753:3 */

// ****************************************************************************
//
// ITypeComp interface

type LPTYPECOMP = uintptr /* oaidl.h:2851:19 */

type DESCKIND = uint32 /* oaidl.h:2860:3 */

type tagBINDPTR = struct{ lpfuncdesc uintptr } /* oaidl.h:2862:9 */

type BINDPTR = tagBINDPTR /* oaidl.h:2866:3 */
type LPBINDPTR = uintptr  /* oaidl.h:2867:26 */
type ITypeCompVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Bind           uintptr
	BindType       uintptr
} /* oaidl.h:52:9 */

type ITypeCompVtbl = ITypeCompVtbl1 /* oaidl.h:2926:3 */

// ****************************************************************************
//
// ITypeInfo interface

type LPTYPEINFO = uintptr /* oaidl.h:3031:19 */
type ITypeInfoVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetTypeAttr          uintptr
	GetTypeComp          uintptr
	GetFuncDesc          uintptr
	GetVarDesc           uintptr
	GetNames             uintptr
	GetRefTypeOfImplType uintptr
	GetImplTypeFlags     uintptr
	GetIDsOfNames        uintptr
	Invoke               uintptr
	GetDocumentation     uintptr
	GetDllEntry          uintptr
	GetRefTypeInfo       uintptr
	AddressOfMember      uintptr
	CreateInstance       uintptr
	GetMops              uintptr
	GetContainingTypeLib uintptr
	ReleaseTypeAttr      uintptr
	ReleaseFuncDesc      uintptr
	ReleaseVarDesc       uintptr
} /* oaidl.h:57:9 */

type ITypeInfoVtbl = ITypeInfoVtbl1 /* oaidl.h:3253:3 */

// ****************************************************************************
//
// ITypeInfo2 interface

type LPTYPEINFO2 = uintptr /* oaidl.h:3662:20 */
type ITypeInfo2Vtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	GetTypeAttr            uintptr
	GetTypeComp            uintptr
	GetFuncDesc            uintptr
	GetVarDesc             uintptr
	GetNames               uintptr
	GetRefTypeOfImplType   uintptr
	GetImplTypeFlags       uintptr
	GetIDsOfNames          uintptr
	Invoke                 uintptr
	GetDocumentation       uintptr
	GetDllEntry            uintptr
	GetRefTypeInfo         uintptr
	AddressOfMember        uintptr
	CreateInstance         uintptr
	GetMops                uintptr
	GetContainingTypeLib   uintptr
	ReleaseTypeAttr        uintptr
	ReleaseFuncDesc        uintptr
	ReleaseVarDesc         uintptr
	GetTypeKind            uintptr
	GetTypeFlags           uintptr
	GetFuncIndexOfMemId    uintptr
	GetVarIndexOfMemId     uintptr
	GetCustData            uintptr
	GetFuncCustData        uintptr
	GetParamCustData       uintptr
	GetVarCustData         uintptr
	GetImplTypeCustData    uintptr
	GetDocumentation2      uintptr
	GetAllCustData         uintptr
	GetAllFuncCustData     uintptr
	GetAllParamCustData    uintptr
	GetAllVarCustData      uintptr
	GetAllImplTypeCustData uintptr
} /* oaidl.h:62:9 */

type ITypeInfo2Vtbl = ITypeInfo2Vtbl1 /* oaidl.h:3947:3 */

// ****************************************************************************
//
// ITypeLib interface

type SYSKIND = uint32 /* oaidl.h:4289:3 */

type LIBFLAGS = uint32 /* oaidl.h:4296:3 */

type LPTYPELIB = uintptr /* oaidl.h:4298:18 */

type tagTLIBATTR = struct {
	guid         GUID
	lcid         LCID
	syskind      SYSKIND
	wMajorVerNum WORD
	wMinorVerNum WORD
	wLibFlags    WORD
	_            [2]byte
} /* oaidl.h:4300:9 */

type TLIBATTR = tagTLIBATTR /* oaidl.h:4307:3 */
type LPTLIBATTR = uintptr   /* oaidl.h:4308:28 */
type ITypeLibVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	GetTypeInfoCount  uintptr
	GetTypeInfo       uintptr
	GetTypeInfoType   uintptr
	GetTypeInfoOfGuid uintptr
	GetLibAttr        uintptr
	GetTypeComp       uintptr
	GetDocumentation  uintptr
	IsName            uintptr
	FindName          uintptr
	ReleaseTLibAttr   uintptr
} /* oaidl.h:67:9 */

type ITypeLibVtbl = ITypeLibVtbl1 /* oaidl.h:4432:3 */

// ****************************************************************************
//
// ITypeLib2 interface

type LPTYPELIB2 = uintptr /* oaidl.h:4667:19 */
type ITypeLib2Vtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	GetTypeInfoCount  uintptr
	GetTypeInfo       uintptr
	GetTypeInfoType   uintptr
	GetTypeInfoOfGuid uintptr
	GetLibAttr        uintptr
	GetTypeComp       uintptr
	GetDocumentation  uintptr
	IsName            uintptr
	FindName          uintptr
	ReleaseTLibAttr   uintptr
	GetCustData       uintptr
	GetLibStatistics  uintptr
	GetDocumentation2 uintptr
	GetAllCustData    uintptr
} /* oaidl.h:72:9 */

type ITypeLib2Vtbl = ITypeLib2Vtbl1 /* oaidl.h:4789:3 */

// ****************************************************************************
//
// ITypeChangeEvents interface

type LPTYPECHANGEEVENTS = uintptr /* oaidl.h:4948:27 */

type CHANGEKIND = uint32 /* oaidl.h:4959:3 */
type ITypeChangeEventsVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	RequestTypeChange uintptr
	AfterTypeChange   uintptr
} /* oaidl.h:77:9 */

type ITypeChangeEventsVtbl = ITypeChangeEventsVtbl1 /* oaidl.h:5012:3 */

// ****************************************************************************
//
// IErrorInfo interface

type LPERRORINFO = uintptr /* oaidl.h:5080:20 */
type IErrorInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetGUID        uintptr
	GetSource      uintptr
	GetDescription uintptr
	GetHelpFile    uintptr
	GetHelpContext uintptr
} /* oaidl.h:82:9 */

type IErrorInfoVtbl = IErrorInfoVtbl1 /* oaidl.h:5144:3 */

// ****************************************************************************
//
// ICreateErrorInfo interface

type LPCREATEERRORINFO = uintptr /* oaidl.h:5243:26 */
type ICreateErrorInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	SetGUID        uintptr
	SetSource      uintptr
	SetDescription uintptr
	SetHelpFile    uintptr
	SetHelpContext uintptr
} /* oaidl.h:87:9 */

type ICreateErrorInfoVtbl = ICreateErrorInfoVtbl1 /* oaidl.h:5307:3 */

// ****************************************************************************
//
// ISupportErrorInfo interface

type LPSUPPORTERRORINFO = uintptr /* oaidl.h:5406:27 */
type ISupportErrorInfoVtbl1 = struct {
	QueryInterface             uintptr
	AddRef                     uintptr
	Release                    uintptr
	InterfaceSupportsErrorInfo uintptr
} /* oaidl.h:92:9 */

type ISupportErrorInfoVtbl = ISupportErrorInfoVtbl1 /* oaidl.h:5442:3 */
type ITypeFactoryVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	CreateFromTypeInfo uintptr
} /* oaidl.h:97:9 */

type ITypeFactoryVtbl = ITypeFactoryVtbl1 /* oaidl.h:5531:3 */
type ITypeMarshalVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Size           uintptr
	Marshal        uintptr
	Unmarshal      uintptr
	Free           uintptr
} /* oaidl.h:102:9 */

type ITypeMarshalVtbl = ITypeMarshalVtbl1 /* oaidl.h:5663:3 */

// ****************************************************************************
//
// IRecordInfo interface

type LPRECORDINFO = uintptr /* oaidl.h:5762:21 */
type IRecordInfoVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	RecordInit       uintptr
	RecordClear      uintptr
	RecordCopy       uintptr
	GetGuid          uintptr
	GetName          uintptr
	GetSize          uintptr
	GetTypeInfo      uintptr
	GetField         uintptr
	GetFieldNoCopy   uintptr
	PutField         uintptr
	PutFieldNoCopy   uintptr
	GetFieldNames    uintptr
	IsMatchingType   uintptr
	RecordCreate     uintptr
	RecordCreateCopy uintptr
	RecordDestroy    uintptr
} /* oaidl.h:107:9 */

type IRecordInfoVtbl = IRecordInfoVtbl1 /* oaidl.h:5930:3 */

// ****************************************************************************
//
// IErrorLog interface

type LPERRORLOG = uintptr /* oaidl.h:6174:19 */
type IErrorLogVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	AddError       uintptr
} /* oaidl.h:112:9 */

type IErrorLogVtbl = IErrorLogVtbl1 /* oaidl.h:6212:3 */

// ****************************************************************************
//
// IPropertyBag interface

type LPPROPERTYBAG = uintptr /* oaidl.h:6264:22 */
type IPropertyBagVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Read           uintptr
	Write          uintptr
} /* oaidl.h:117:9 */

type IPropertyBagVtbl = IPropertyBagVtbl1 /* oaidl.h:6313:3 */

// End additional prototypes

type IXMLDOMImplementation1 = struct{ lpVtbl uintptr } /* msxml.h:34:9 */

// End additional prototypes

type IXMLDOMImplementation = IXMLDOMImplementation1 /* msxml.h:34:38 */

type IXMLDOMNode1 = struct{ lpVtbl uintptr } /* msxml.h:39:9 */

type IXMLDOMNode = IXMLDOMNode1 /* msxml.h:39:28 */

type IXMLDOMDocumentFragment1 = struct{ lpVtbl uintptr } /* msxml.h:44:9 */

type IXMLDOMDocumentFragment = IXMLDOMDocumentFragment1 /* msxml.h:44:40 */

type IXMLDOMDocument1 = struct{ lpVtbl uintptr } /* msxml.h:49:9 */

type IXMLDOMDocument = IXMLDOMDocument1 /* msxml.h:49:32 */

type IXMLDOMNodeList1 = struct{ lpVtbl uintptr } /* msxml.h:54:9 */

type IXMLDOMNodeList = IXMLDOMNodeList1 /* msxml.h:54:32 */

type IXMLDOMNamedNodeMap1 = struct{ lpVtbl uintptr } /* msxml.h:59:9 */

type IXMLDOMNamedNodeMap = IXMLDOMNamedNodeMap1 /* msxml.h:59:36 */

type IXMLDOMCharacterData1 = struct{ lpVtbl uintptr } /* msxml.h:64:9 */

type IXMLDOMCharacterData = IXMLDOMCharacterData1 /* msxml.h:64:37 */

type IXMLDOMAttribute1 = struct{ lpVtbl uintptr } /* msxml.h:69:9 */

type IXMLDOMAttribute = IXMLDOMAttribute1 /* msxml.h:69:33 */

type IXMLDOMElement1 = struct{ lpVtbl uintptr } /* msxml.h:74:9 */

type IXMLDOMElement = IXMLDOMElement1 /* msxml.h:74:31 */

type IXMLDOMText1 = struct{ lpVtbl uintptr } /* msxml.h:79:9 */

type IXMLDOMText = IXMLDOMText1 /* msxml.h:79:28 */

type IXMLDOMComment1 = struct{ lpVtbl uintptr } /* msxml.h:84:9 */

type IXMLDOMComment = IXMLDOMComment1 /* msxml.h:84:31 */

type IXMLDOMProcessingInstruction1 = struct{ lpVtbl uintptr } /* msxml.h:89:9 */

type IXMLDOMProcessingInstruction = IXMLDOMProcessingInstruction1 /* msxml.h:89:45 */

type IXMLDOMCDATASection1 = struct{ lpVtbl uintptr } /* msxml.h:94:9 */

type IXMLDOMCDATASection = IXMLDOMCDATASection1 /* msxml.h:94:36 */

type IXMLDOMDocumentType1 = struct{ lpVtbl uintptr } /* msxml.h:99:9 */

type IXMLDOMDocumentType = IXMLDOMDocumentType1 /* msxml.h:99:36 */

type IXMLDOMNotation1 = struct{ lpVtbl uintptr } /* msxml.h:104:9 */

type IXMLDOMNotation = IXMLDOMNotation1 /* msxml.h:104:32 */

type IXMLDOMEntity1 = struct{ lpVtbl uintptr } /* msxml.h:109:9 */

type IXMLDOMEntity = IXMLDOMEntity1 /* msxml.h:109:30 */

type IXMLDOMEntityReference1 = struct{ lpVtbl uintptr } /* msxml.h:114:9 */

type IXMLDOMEntityReference = IXMLDOMEntityReference1 /* msxml.h:114:39 */

type IXMLDOMParseError1 = struct{ lpVtbl uintptr } /* msxml.h:119:9 */

type IXMLDOMParseError = IXMLDOMParseError1 /* msxml.h:119:34 */

type IXTLRuntime1 = struct{ lpVtbl uintptr } /* msxml.h:124:9 */

type IXTLRuntime = IXTLRuntime1 /* msxml.h:124:28 */

type XMLDOMDocumentEvents1 = struct{ lpVtbl uintptr } /* msxml.h:129:9 */

type XMLDOMDocumentEvents = XMLDOMDocumentEvents1 /* msxml.h:129:37 */

type IXMLHttpRequest1 = struct{ lpVtbl uintptr } /* msxml.h:152:9 */

type IXMLHttpRequest = IXMLHttpRequest1 /* msxml.h:152:32 */

type IXMLDSOControl1 = struct{ lpVtbl uintptr } /* msxml.h:166:9 */

type IXMLDSOControl = IXMLDSOControl1 /* msxml.h:166:31 */

type IXMLElementCollection1 = struct{ lpVtbl uintptr } /* msxml.h:180:9 */

type IXMLElementCollection = IXMLElementCollection1 /* msxml.h:180:38 */

type IXMLDocument1 = struct{ lpVtbl uintptr } /* msxml.h:185:9 */

type IXMLDocument = IXMLDocument1 /* msxml.h:185:29 */

type IXMLDocument21 = struct{ lpVtbl uintptr } /* msxml.h:190:9 */

type IXMLDocument2 = IXMLDocument21 /* msxml.h:190:30 */

type IXMLElement1 = struct{ lpVtbl uintptr } /* msxml.h:195:9 */

type IXMLElement = IXMLElement1 /* msxml.h:195:28 */

type IXMLElement21 = struct{ lpVtbl uintptr } /* msxml.h:200:9 */

type IXMLElement2 = IXMLElement21 /* msxml.h:200:29 */

type IXMLAttribute1 = struct{ lpVtbl uintptr } /* msxml.h:205:9 */

type IXMLAttribute = IXMLAttribute1 /* msxml.h:205:30 */

type IXMLError1 = struct{ lpVtbl uintptr } /* msxml.h:210:9 */

type IXMLError = IXMLError1 /* msxml.h:210:26 */

type _xml_error = struct {
	_nLine       uint32
	_pchBuf      BSTR
	_cchBuf      uint32
	_ich         uint32
	_pszFound    BSTR
	_pszExpected BSTR
	_reserved1   DWORD
	_reserved2   DWORD
} /* msxml.h:224:11 */

type XML_ERROR = _xml_error /* msxml.h:233:5 */

type DOMNodeType = uint32 /* msxml.h:245:5 */

type XMLELEM_TYPE = uint32 /* msxml.h:250:5 */
type IXMLDOMImplementationVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	hasFeature       uintptr
} /* msxml.h:34:9 */

type IXMLDOMImplementationVtbl = IXMLDOMImplementationVtbl1 /* msxml.h:274:5 */
type IXMLDOMNodeVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
} /* msxml.h:39:9 */

type IXMLDOMNodeVtbl = IXMLDOMNodeVtbl1 /* msxml.h:383:5 */
type IXMLDOMDocumentFragmentVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
} /* msxml.h:44:9 */

type IXMLDOMDocumentFragmentVtbl = IXMLDOMDocumentFragmentVtbl1 /* msxml.h:560:5 */
type IXMLDOMDocumentVtbl1 = struct {
	QueryInterface              uintptr
	AddRef                      uintptr
	Release                     uintptr
	GetTypeInfoCount            uintptr
	GetTypeInfo                 uintptr
	GetIDsOfNames               uintptr
	Invoke                      uintptr
	get_nodeName                uintptr
	get_nodeValue               uintptr
	put_nodeValue               uintptr
	get_nodeType                uintptr
	get_parentNode              uintptr
	get_childNodes              uintptr
	get_firstChild              uintptr
	get_lastChild               uintptr
	get_previousSibling         uintptr
	get_nextSibling             uintptr
	get_attributes              uintptr
	insertBefore                uintptr
	replaceChild                uintptr
	removeChild                 uintptr
	appendChild                 uintptr
	hasChildNodes               uintptr
	get_ownerDocument           uintptr
	cloneNode                   uintptr
	get_nodeTypeString          uintptr
	get_text                    uintptr
	put_text                    uintptr
	get_specified               uintptr
	get_definition              uintptr
	get_nodeTypedValue          uintptr
	put_nodeTypedValue          uintptr
	get_dataType                uintptr
	put_dataType                uintptr
	get_xml                     uintptr
	transformNode               uintptr
	selectNodes                 uintptr
	selectSingleNode            uintptr
	get_parsed                  uintptr
	get_namespaceURI            uintptr
	get_prefix                  uintptr
	get_baseName                uintptr
	transformNodeToObject       uintptr
	get_doctype                 uintptr
	get_implementation          uintptr
	get_documentElement         uintptr
	putref_documentElement      uintptr
	createElement               uintptr
	createDocumentFragment      uintptr
	createTextNode              uintptr
	createComment               uintptr
	createCDATASection          uintptr
	createProcessingInstruction uintptr
	createAttribute             uintptr
	createEntityReference       uintptr
	getElementsByTagName        uintptr
	createNode                  uintptr
	nodeFromID                  uintptr
	load                        uintptr
	get_readyState              uintptr
	get_parseError              uintptr
	get_url                     uintptr
	get_async                   uintptr
	put_async                   uintptr
	abort                       uintptr
	loadXML                     uintptr
	save                        uintptr
	get_validateOnParse         uintptr
	put_validateOnParse         uintptr
	get_resolveExternals        uintptr
	put_resolveExternals        uintptr
	get_preserveWhiteSpace      uintptr
	put_preserveWhiteSpace      uintptr
	put_onreadystatechange      uintptr
	put_ondataavailable         uintptr
	put_ontransformnode         uintptr
} /* msxml.h:49:9 */

type IXMLDOMDocumentVtbl = IXMLDOMDocumentVtbl1 /* msxml.h:732:5 */
type IXMLDOMNodeListVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	get_item         uintptr
	get_length       uintptr
	nextNode         uintptr
	reset            uintptr
	get__newEnum     uintptr
} /* msxml.h:54:9 */

type IXMLDOMNodeListVtbl = IXMLDOMNodeListVtbl1 /* msxml.h:911:5 */
type IXMLDOMNamedNodeMapVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	GetTypeInfoCount    uintptr
	GetTypeInfo         uintptr
	GetIDsOfNames       uintptr
	Invoke              uintptr
	getNamedItem        uintptr
	setNamedItem        uintptr
	removeNamedItem     uintptr
	get_item            uintptr
	get_length          uintptr
	getQualifiedItem    uintptr
	removeQualifiedItem uintptr
	nextNode            uintptr
	reset               uintptr
	get__newEnum        uintptr
} /* msxml.h:59:9 */

type IXMLDOMNamedNodeMapVtbl = IXMLDOMNamedNodeMapVtbl1 /* msxml.h:980:5 */
type IXMLDOMCharacterDataVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_data              uintptr
	put_data              uintptr
	get_length            uintptr
	substringData         uintptr
	appendData            uintptr
	insertData            uintptr
	deleteData            uintptr
	replaceData           uintptr
} /* msxml.h:64:9 */

type IXMLDOMCharacterDataVtbl = IXMLDOMCharacterDataVtbl1 /* msxml.h:1096:5 */
type IXMLDOMAttributeVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_name              uintptr
	get_value             uintptr
	put_value             uintptr
} /* msxml.h:69:9 */

type IXMLDOMAttributeVtbl = IXMLDOMAttributeVtbl1 /* msxml.h:1232:5 */
type IXMLDOMElementVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_tagName           uintptr
	getAttribute          uintptr
	setAttribute          uintptr
	removeAttribute       uintptr
	getAttributeNode      uintptr
	setAttributeNode      uintptr
	removeAttributeNode   uintptr
	getElementsByTagName  uintptr
	normalize             uintptr
} /* msxml.h:74:9 */

type IXMLDOMElementVtbl = IXMLDOMElementVtbl1 /* msxml.h:1365:5 */
type IXMLDOMTextVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_data              uintptr
	put_data              uintptr
	get_length            uintptr
	substringData         uintptr
	appendData            uintptr
	insertData            uintptr
	deleteData            uintptr
	replaceData           uintptr
	splitText             uintptr
} /* msxml.h:79:9 */

type IXMLDOMTextVtbl = IXMLDOMTextVtbl1 /* msxml.h:1508:5 */
type IXMLDOMCommentVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_data              uintptr
	put_data              uintptr
	get_length            uintptr
	substringData         uintptr
	appendData            uintptr
	insertData            uintptr
	deleteData            uintptr
	replaceData           uintptr
} /* msxml.h:84:9 */

type IXMLDOMCommentVtbl = IXMLDOMCommentVtbl1 /* msxml.h:1632:5 */
type IXMLDOMProcessingInstructionVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_target            uintptr
	get_data              uintptr
	put_data              uintptr
} /* msxml.h:89:9 */

type IXMLDOMProcessingInstructionVtbl = IXMLDOMProcessingInstructionVtbl1 /* msxml.h:1752:5 */
type IXMLDOMCDATASectionVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_data              uintptr
	put_data              uintptr
	get_length            uintptr
	substringData         uintptr
	appendData            uintptr
	insertData            uintptr
	deleteData            uintptr
	replaceData           uintptr
	splitText             uintptr
} /* msxml.h:94:9 */

type IXMLDOMCDATASectionVtbl = IXMLDOMCDATASectionVtbl1 /* msxml.h:1875:5 */
type IXMLDOMDocumentTypeVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_name              uintptr
	get_entities          uintptr
	get_notations         uintptr
} /* msxml.h:99:9 */

type IXMLDOMDocumentTypeVtbl = IXMLDOMDocumentTypeVtbl1 /* msxml.h:1996:5 */
type IXMLDOMNotationVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_publicId          uintptr
	get_systemId          uintptr
} /* msxml.h:104:9 */

type IXMLDOMNotationVtbl = IXMLDOMNotationVtbl1 /* msxml.h:2115:5 */
type IXMLDOMEntityVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	get_publicId          uintptr
	get_systemId          uintptr
	get_notationName      uintptr
} /* msxml.h:109:9 */

type IXMLDOMEntityVtbl = IXMLDOMEntityVtbl1 /* msxml.h:2233:5 */
type IXMLDOMEntityReferenceVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
} /* msxml.h:114:9 */

type IXMLDOMEntityReferenceVtbl = IXMLDOMEntityReferenceVtbl1 /* msxml.h:2347:5 */
type IXMLDOMParseErrorVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	get_errorCode    uintptr
	get_url          uintptr
	get_reason       uintptr
	get_srcText      uintptr
	get_line         uintptr
	get_linepos      uintptr
	get_filepos      uintptr
} /* msxml.h:119:9 */

type IXMLDOMParseErrorVtbl = IXMLDOMParseErrorVtbl1 /* msxml.h:2431:5 */
type IXTLRuntimeVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_nodeName          uintptr
	get_nodeValue         uintptr
	put_nodeValue         uintptr
	get_nodeType          uintptr
	get_parentNode        uintptr
	get_childNodes        uintptr
	get_firstChild        uintptr
	get_lastChild         uintptr
	get_previousSibling   uintptr
	get_nextSibling       uintptr
	get_attributes        uintptr
	insertBefore          uintptr
	replaceChild          uintptr
	removeChild           uintptr
	appendChild           uintptr
	hasChildNodes         uintptr
	get_ownerDocument     uintptr
	cloneNode             uintptr
	get_nodeTypeString    uintptr
	get_text              uintptr
	put_text              uintptr
	get_specified         uintptr
	get_definition        uintptr
	get_nodeTypedValue    uintptr
	put_nodeTypedValue    uintptr
	get_dataType          uintptr
	put_dataType          uintptr
	get_xml               uintptr
	transformNode         uintptr
	selectNodes           uintptr
	selectSingleNode      uintptr
	get_parsed            uintptr
	get_namespaceURI      uintptr
	get_prefix            uintptr
	get_baseName          uintptr
	transformNodeToObject uintptr
	uniqueID              uintptr
	depth                 uintptr
	childNumber           uintptr
	ancestorChildNumber   uintptr
	absoluteChildNumber   uintptr
	formatIndex           uintptr
	formatNumber          uintptr
	formatDate            uintptr
	formatTime            uintptr
} /* msxml.h:124:9 */

type IXTLRuntimeVtbl = IXTLRuntimeVtbl1 /* msxml.h:2540:5 */
type XMLDOMDocumentEventsVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
} /* msxml.h:129:9 */

type XMLDOMDocumentEventsVtbl = XMLDOMDocumentEventsVtbl1 /* msxml.h:2636:5 */
type IXMLHttpRequestVtbl1 = struct {
	QueryInterface         uintptr
	AddRef                 uintptr
	Release                uintptr
	GetTypeInfoCount       uintptr
	GetTypeInfo            uintptr
	GetIDsOfNames          uintptr
	Invoke                 uintptr
	open                   uintptr
	setRequestHeader       uintptr
	getResponseHeader      uintptr
	getAllResponseHeaders  uintptr
	send                   uintptr
	abort                  uintptr
	get_status             uintptr
	get_statusText         uintptr
	get_responseXML        uintptr
	get_responseText       uintptr
	get_responseBody       uintptr
	get_responseStream     uintptr
	get_readyState         uintptr
	put_onreadystatechange uintptr
} /* msxml.h:152:9 */

type IXMLHttpRequestVtbl = IXMLHttpRequestVtbl1 /* msxml.h:2707:5 */
type IXMLDSOControlVtbl1 = struct {
	QueryInterface        uintptr
	AddRef                uintptr
	Release               uintptr
	GetTypeInfoCount      uintptr
	GetTypeInfo           uintptr
	GetIDsOfNames         uintptr
	Invoke                uintptr
	get_XMLDocument       uintptr
	put_XMLDocument       uintptr
	get_JavaDSOCompatible uintptr
	put_JavaDSOCompatible uintptr
	get_readyState        uintptr
} /* msxml.h:166:9 */

type IXMLDSOControlVtbl = IXMLDSOControlVtbl1 /* msxml.h:2798:5 */
type IXMLElementCollectionVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	put_length       uintptr
	get_length       uintptr
	get__newEnum     uintptr
	item             uintptr
} /* msxml.h:180:9 */

type IXMLElementCollectionVtbl = IXMLElementCollectionVtbl1 /* msxml.h:2860:5 */
type IXMLDocumentVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetTypeInfoCount     uintptr
	GetTypeInfo          uintptr
	GetIDsOfNames        uintptr
	Invoke               uintptr
	get_root             uintptr
	get_fileSize         uintptr
	get_fileModifiedDate uintptr
	get_fileUpdatedDate  uintptr
	get_URL              uintptr
	put_URL              uintptr
	get_mimeType         uintptr
	get_readyState       uintptr
	get_charset          uintptr
	put_charset          uintptr
	get_version          uintptr
	get_doctype          uintptr
	get_dtdURL           uintptr
	createElement        uintptr
} /* msxml.h:185:9 */

type IXMLDocumentVtbl = IXMLDocumentVtbl1 /* msxml.h:2934:5 */
type IXMLDocument2Vtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetTypeInfoCount     uintptr
	GetTypeInfo          uintptr
	GetIDsOfNames        uintptr
	Invoke               uintptr
	get_root             uintptr
	get_fileSize         uintptr
	get_fileModifiedDate uintptr
	get_fileUpdatedDate  uintptr
	get_URL              uintptr
	put_URL              uintptr
	get_mimeType         uintptr
	get_readyState       uintptr
	get_charset          uintptr
	put_charset          uintptr
	get_version          uintptr
	get_doctype          uintptr
	get_dtdURL           uintptr
	createElement        uintptr
	get_async            uintptr
	put_async            uintptr
} /* msxml.h:190:9 */

type IXMLDocument2Vtbl = IXMLDocument2Vtbl1 /* msxml.h:3042:5 */
type IXMLElementVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	get_tagName      uintptr
	put_tagName      uintptr
	get_parent       uintptr
	setAttribute     uintptr
	getAttribute     uintptr
	removeAttribute  uintptr
	get_children     uintptr
	get_type         uintptr
	get_text         uintptr
	put_text         uintptr
	addChild         uintptr
	removeChild      uintptr
} /* msxml.h:195:9 */

type IXMLElementVtbl = IXMLElementVtbl1 /* msxml.h:3148:5 */
type IXMLElement2Vtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	get_tagName      uintptr
	put_tagName      uintptr
	get_parent       uintptr
	setAttribute     uintptr
	getAttribute     uintptr
	removeAttribute  uintptr
	get_children     uintptr
	get_type         uintptr
	get_text         uintptr
	put_text         uintptr
	addChild         uintptr
	removeChild      uintptr
	get_attributes   uintptr
} /* msxml.h:200:9 */

type IXMLElement2Vtbl = IXMLElement2Vtbl1 /* msxml.h:3244:5 */
type IXMLAttributeVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	GetTypeInfoCount uintptr
	GetTypeInfo      uintptr
	GetIDsOfNames    uintptr
	Invoke           uintptr
	get_name         uintptr
	get_value        uintptr
} /* msxml.h:205:9 */

type IXMLAttributeVtbl = IXMLAttributeVtbl1 /* msxml.h:3321:5 */
type IXMLErrorVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetErrorInfo   uintptr
} /* msxml.h:210:9 */

type IXMLErrorVtbl = IXMLErrorVtbl1 /* msxml.h:3359:5 */

// ****************************************************************************
//
// IPersistMoniker interface

type LPPERSISTMONIKER = uintptr /* urlmon.h:590:25 */
type IPersistMonikerVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetClassID     uintptr
	IsDirty        uintptr
	Load           uintptr
	Save           uintptr
	SaveCompleted  uintptr
	GetCurMoniker  uintptr
} /* urlmon.h:22:9 */

type IPersistMonikerVtbl = IPersistMonikerVtbl1 /* urlmon.h:672:3 */

// ****************************************************************************
//
// IMonikerProp interface

type LPMONIKERPROP = uintptr /* urlmon.h:791:22 */

type MONIKERPROPERTY = uint32 /* urlmon.h:799:3 */
type IMonikerPropVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	PutProperty    uintptr
} /* urlmon.h:27:9 */

type IMonikerPropVtbl = IMonikerPropVtbl1 /* urlmon.h:837:3 */

// ****************************************************************************
//
// IBindProtocol interface

type LPBINDPROTOCOL = uintptr /* urlmon.h:893:23 */
type IBindProtocolVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	CreateBinding  uintptr
} /* urlmon.h:32:9 */

type IBindProtocolVtbl = IBindProtocolVtbl1 /* urlmon.h:933:3 */

// ****************************************************************************
//
// IBinding interface

type LPBINDING = uintptr /* urlmon.h:990:18 */
type IBindingVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Abort          uintptr
	Suspend        uintptr
	Resume         uintptr
	SetPriority    uintptr
	GetPriority    uintptr
	GetBindResult  uintptr
} /* urlmon.h:37:9 */

type IBindingVtbl = IBindingVtbl1 /* urlmon.h:1064:3 */

// ****************************************************************************
//
// IBindStatusCallback interface

type LPBINDSTATUSCALLBACK = uintptr /* urlmon.h:1193:29 */

type BINDVERB = uint32 /* urlmon.h:1201:3 */

type BINDINFOF = uint32 /* urlmon.h:1206:3 */

type BINDF = uint32 /* urlmon.h:1240:3 */

type URL_ENCODING = uint32 /* urlmon.h:1246:3 */

type _tagBINDINFO = struct {
	cbSize             ULONG
	szExtraInfo        LPWSTR
	stgmedData         STGMEDIUM
	grfBindInfoF       DWORD
	dwBindVerb         DWORD
	szCustomVerb       LPWSTR
	cbstgmedData       DWORD
	dwOptions          DWORD
	dwOptionsFlags     DWORD
	dwCodePage         DWORD
	securityAttributes SECURITY_ATTRIBUTES
	iid                IID
	pUnk               uintptr
	dwReserved         DWORD
} /* urlmon.h:1248:9 */

type BINDINFO = _tagBINDINFO /* urlmon.h:1263:3 */

type _REMSECURITY_ATTRIBUTES = struct {
	nLength              DWORD
	lpSecurityDescriptor DWORD
	bInheritHandle       WINBOOL
} /* urlmon.h:1265:9 */

type REMSECURITY_ATTRIBUTES = _REMSECURITY_ATTRIBUTES /* urlmon.h:1269:3 */
type PREMSECURITY_ATTRIBUTES = uintptr                /* urlmon.h:1270:40 */
type LPREMSECURITY_ATTRIBUTES = uintptr               /* urlmon.h:1271:40 */

type _tagRemBINDINFO = struct {
	cbSize             ULONG
	szExtraInfo        LPWSTR
	grfBindInfoF       DWORD
	dwBindVerb         DWORD
	szCustomVerb       LPWSTR
	cbstgmedData       DWORD
	dwOptions          DWORD
	dwOptionsFlags     DWORD
	dwCodePage         DWORD
	securityAttributes REMSECURITY_ATTRIBUTES
	iid                IID
	pUnk               uintptr
	dwReserved         DWORD
} /* urlmon.h:1273:9 */

type RemBINDINFO = _tagRemBINDINFO /* urlmon.h:1287:3 */

type tagRemFORMATETC = struct {
	cfFormat DWORD
	ptd      DWORD
	dwAspect DWORD
	lindex   LONG
	tymed    DWORD
} /* urlmon.h:1289:9 */

type RemFORMATETC = tagRemFORMATETC /* urlmon.h:1295:3 */
type LPREMFORMATETC = uintptr       /* urlmon.h:1296:32 */

type BINDINFO_OPTIONS = int32 /* urlmon.h:1314:3 */

type BSCF = uint32 /* urlmon.h:1324:3 */

type BINDSTATUS = uint32 /* urlmon.h:1395:3 */
type IBindStatusCallbackVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	OnStartBinding    uintptr
	GetPriority       uintptr
	OnLowResource     uintptr
	OnProgress        uintptr
	OnStopBinding     uintptr
	GetBindInfo       uintptr
	OnDataAvailable   uintptr
	OnObjectAvailable uintptr
} /* urlmon.h:42:9 */

type IBindStatusCallbackVtbl = IBindStatusCallbackVtbl1 /* urlmon.h:1500:3 */

// ****************************************************************************
//
// IBindStatusCallbackEx interface

type LPBINDSTATUSCALLBACKEX = uintptr /* urlmon.h:1673:31 */

type BINDF2 = uint32 /* urlmon.h:1699:3 */
type IBindStatusCallbackExVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	OnStartBinding    uintptr
	GetPriority       uintptr
	OnLowResource     uintptr
	OnProgress        uintptr
	OnStopBinding     uintptr
	GetBindInfo       uintptr
	OnDataAvailable   uintptr
	OnObjectAvailable uintptr
	GetBindInfoEx     uintptr
} /* urlmon.h:47:9 */

type IBindStatusCallbackExVtbl = IBindStatusCallbackExVtbl1 /* urlmon.h:1784:3 */

// ****************************************************************************
//
// IAuthenticate interface

type LPAUTHENTICATION = uintptr /* urlmon.h:1890:23 */
type IAuthenticateVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Authenticate   uintptr
} /* urlmon.h:52:9 */

type IAuthenticateVtbl = IAuthenticateVtbl1 /* urlmon.h:1930:3 */

// ****************************************************************************
//
// IAuthenticateEx interface

type LPAUTHENTICATIONEX = uintptr /* urlmon.h:1987:25 */

type AUTHENTICATEF = uint32 /* urlmon.h:1993:3 */

type _tagAUTHENTICATEINFO = struct {
	dwFlags    DWORD
	dwReserved DWORD
} /* urlmon.h:1995:9 */

type AUTHENTICATEINFO = _tagAUTHENTICATEINFO /* urlmon.h:1998:3 */
type IAuthenticateExVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Authenticate   uintptr
	AuthenticateEx uintptr
} /* urlmon.h:57:9 */

type IAuthenticateExVtbl = IAuthenticateExVtbl1 /* urlmon.h:2047:3 */

// ****************************************************************************
//
// IHttpNegotiate interface

type LPHTTPNEGOTIATE = uintptr /* urlmon.h:2111:24 */
type IHttpNegotiateVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	BeginningTransaction uintptr
	OnResponse           uintptr
} /* urlmon.h:62:9 */

type IHttpNegotiateVtbl = IHttpNegotiateVtbl1 /* urlmon.h:2166:3 */

// ****************************************************************************
//
// IHttpNegotiate2 interface

type LPHTTPNEGOTIATE2 = uintptr /* urlmon.h:2239:25 */
type IHttpNegotiate2Vtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	BeginningTransaction uintptr
	OnResponse           uintptr
	GetRootSecurityId    uintptr
} /* urlmon.h:67:9 */

type IHttpNegotiate2Vtbl = IHttpNegotiate2Vtbl1 /* urlmon.h:2294:3 */

// ****************************************************************************
//
// IHttpNegotiate3 interface

type LPHTTPNEGOTIATE3 = uintptr /* urlmon.h:2361:25 */
type IHttpNegotiate3Vtbl1 = struct {
	QueryInterface                 uintptr
	AddRef                         uintptr
	Release                        uintptr
	BeginningTransaction           uintptr
	OnResponse                     uintptr
	GetRootSecurityId              uintptr
	GetSerializedClientCertContext uintptr
} /* urlmon.h:72:9 */

type IHttpNegotiate3Vtbl = IHttpNegotiate3Vtbl1 /* urlmon.h:2421:3 */

// ****************************************************************************
//
// IWinInetFileStream interface

type LPWININETFILESTREAM = uintptr /* urlmon.h:2493:28 */
type IWinInetFileStreamVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	SetHandleForUnlock uintptr
	SetDeleteFile      uintptr
} /* urlmon.h:77:9 */

type IWinInetFileStreamVtbl = IWinInetFileStreamVtbl1 /* urlmon.h:2538:3 */

// ****************************************************************************
//
// IWindowForBindingUI interface

type LPWINDOWFORBINDINGUI = uintptr /* urlmon.h:2606:29 */
type IWindowForBindingUIVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetWindow      uintptr
} /* urlmon.h:82:9 */

type IWindowForBindingUIVtbl = IWindowForBindingUIVtbl1 /* urlmon.h:2644:3 */

// ****************************************************************************
//
// ICodeInstall interface

type LPCODEINSTALL = uintptr /* urlmon.h:2700:22 */

type CIP_STATUS = uint32 /* urlmon.h:2713:3 */
type ICodeInstallVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	GetWindow            uintptr
	OnCodeInstallProblem uintptr
} /* urlmon.h:87:9 */

type ICodeInstallVtbl = ICodeInstallVtbl1 /* urlmon.h:2761:3 */

// ****************************************************************************
//
// IWinInetInfo interface

type LPWININETINFO = uintptr /* urlmon.h:4260:22 */
type IWinInetInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	QueryOption    uintptr
} /* urlmon.h:112:9 */

type IWinInetInfoVtbl = IWinInetInfoVtbl1 /* urlmon.h:4299:3 */

// ****************************************************************************
//
// IHttpSecurity interface

type LPHTTPSECURITY = uintptr /* urlmon.h:4368:23 */
type IHttpSecurityVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	GetWindow         uintptr
	OnSecurityProblem uintptr
} /* urlmon.h:117:9 */

type IHttpSecurityVtbl = IHttpSecurityVtbl1 /* urlmon.h:4410:3 */

// ****************************************************************************
//
// IWinInetHttpInfo interface

type LPWININETHTTPINFO = uintptr /* urlmon.h:4471:26 */
type IWinInetHttpInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	QueryOption    uintptr
	QueryInfo      uintptr
} /* urlmon.h:122:9 */

type IWinInetHttpInfoVtbl = IWinInetHttpInfoVtbl1 /* urlmon.h:4522:3 */
type IWinInetHttpTimeoutsVtbl1 = struct {
	QueryInterface     uintptr
	AddRef             uintptr
	Release            uintptr
	GetRequestTimeouts uintptr
} /* urlmon.h:127:9 */

type IWinInetHttpTimeoutsVtbl = IWinInetHttpTimeoutsVtbl1 /* urlmon.h:4638:3 */

// ****************************************************************************
//
// IBindHost interface

type LPBINDHOST = uintptr /* urlmon.h:4925:19 */
type IBindHostVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	CreateMoniker        uintptr
	MonikerBindToStorage uintptr
	MonikerBindToObject  uintptr
} /* urlmon.h:142:9 */

type IBindHostVtbl = IBindHostVtbl1 /* urlmon.h:4997:3 */

// ****************************************************************************
//
// IInternet interface

type LPIINTERNET = uintptr /* urlmon.h:5196:19 */
type IInternetVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
} /* urlmon.h:147:9 */

type IInternetVtbl = IInternetVtbl1 /* urlmon.h:5223:3 */

// ****************************************************************************
//
// IInternetBindInfo interface

type LPIINTERNETBINDINFO = uintptr /* urlmon.h:5264:27 */

type BINDSTRING = uint32 /* urlmon.h:5290:3 */
type IInternetBindInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetBindInfo    uintptr
	GetBindString  uintptr
} /* urlmon.h:152:9 */

type IInternetBindInfoVtbl = IInternetBindInfoVtbl1 /* urlmon.h:5341:3 */

// ****************************************************************************
//
// IInternetBindInfoEx interface

type LPIINTERNETBINDINFOEX = uintptr /* urlmon.h:5412:29 */
type IInternetBindInfoExVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetBindInfo    uintptr
	GetBindString  uintptr
	GetBindInfoEx  uintptr
} /* urlmon.h:157:9 */

type IInternetBindInfoExVtbl = IInternetBindInfoExVtbl1 /* urlmon.h:5467:3 */

// ****************************************************************************
//
// IInternetProtocolRoot interface

type LPIINTERNETPROTOCOLROOT = uintptr /* urlmon.h:5535:31 */

type PI_FLAGS = uint32 /* urlmon.h:5553:3 */
type _tagPROTOCOLDATA = struct {
	grfFlags DWORD
	dwState  DWORD
	pData    LPVOID
	cbData   ULONG
} /* urlmon.h:5554:9 */

type PROTOCOLDATA = _tagPROTOCOLDATA /* urlmon.h:5559:3 */

type _tagStartParam = struct {
	iid       IID
	pIBindCtx uintptr
	pItf      uintptr
} /* urlmon.h:5561:9 */

type StartParam = _tagStartParam /* urlmon.h:5565:3 */
type IInternetProtocolRootVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Start          uintptr
	Continue       uintptr
	Abort          uintptr
	Terminate      uintptr
	Suspend        uintptr
	Resume         uintptr
} /* urlmon.h:162:9 */

type IInternetProtocolRootVtbl = IInternetProtocolRootVtbl1 /* urlmon.h:5644:3 */

// ****************************************************************************
//
// IInternetProtocol interface

type LPIINTERNETPROTOCOL = uintptr /* urlmon.h:5762:27 */
type IInternetProtocolVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Start          uintptr
	Continue       uintptr
	Abort          uintptr
	Terminate      uintptr
	Suspend        uintptr
	Resume         uintptr
	Read           uintptr
	Seek           uintptr
	LockRequest    uintptr
	UnlockRequest  uintptr
} /* urlmon.h:167:9 */

type IInternetProtocolVtbl = IInternetProtocolVtbl1 /* urlmon.h:5854:3 */

// ****************************************************************************
//
// IInternetProtocolSink interface

type LPIINTERNETPROTOCOLSINK = uintptr /* urlmon.h:6168:31 */
type IInternetProtocolSinkVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Switch         uintptr
	ReportProgress uintptr
	ReportData     uintptr
	ReportResult   uintptr
} /* urlmon.h:177:9 */

type IInternetProtocolSinkVtbl = IInternetProtocolSinkVtbl1 /* urlmon.h:6235:3 */

// ****************************************************************************
//
// IInternetProtocolSinkStackable interface

type LPIINTERNETPROTOCOLSINKStackable = uintptr /* urlmon.h:6331:40 */
type IInternetProtocolSinkStackableVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	SwitchSink     uintptr
	CommitSwitch   uintptr
	RollbackSwitch uintptr
} /* urlmon.h:182:9 */

type IInternetProtocolSinkStackableVtbl = IInternetProtocolSinkStackableVtbl1 /* urlmon.h:6379:3 */

// ****************************************************************************
//
// IInternetSession interface

type LPIINTERNETSESSION = uintptr /* urlmon.h:6456:26 */

type OIBDG_FLAGS = uint32 /* urlmon.h:6461:3 */
type IInternetSessionVtbl1 = struct {
	QueryInterface       uintptr
	AddRef               uintptr
	Release              uintptr
	RegisterNameSpace    uintptr
	UnregisterNameSpace  uintptr
	RegisterMimeFilter   uintptr
	UnregisterMimeFilter uintptr
	CreateBinding        uintptr
	SetSessionOption     uintptr
	GetSessionOption     uintptr
} /* urlmon.h:187:9 */

type IInternetSessionVtbl = IInternetSessionVtbl1 /* urlmon.h:6579:3 */

// ****************************************************************************
//
// IInternetThreadSwitch interface

type LPIINTERNETTHREADSWITCH = uintptr /* urlmon.h:6726:31 */
type IInternetThreadSwitchVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Prepare        uintptr
	Continue       uintptr
} /* urlmon.h:192:9 */

type IInternetThreadSwitchVtbl = IInternetThreadSwitchVtbl1 /* urlmon.h:6767:3 */

// ****************************************************************************
//
// IInternetPriority interface

type LPIINTERNETPRIORITY = uintptr /* urlmon.h:6832:27 */
type IInternetPriorityVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	SetPriority    uintptr
	GetPriority    uintptr
} /* urlmon.h:197:9 */

type IInternetPriorityVtbl = IInternetPriorityVtbl1 /* urlmon.h:6875:3 */

// ****************************************************************************
//
// IInternetProtocolInfo interface

type LPIINTERNETPROTOCOLINFO = uintptr /* urlmon.h:6942:31 */

type PARSEACTION = uint32 /* urlmon.h:6964:3 */

type PSUACTION = uint32 /* urlmon.h:6969:3 */

type QUERYOPTION = uint32 /* urlmon.h:6988:3 */
type IInternetProtocolInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	ParseUrl       uintptr
	CombineUrl     uintptr
	CompareUrl     uintptr
	QueryInfo      uintptr
} /* urlmon.h:202:9 */

type IInternetProtocolInfoVtbl = IInternetProtocolInfoVtbl1 /* urlmon.h:7085:3 */
type IInternetSecurityMgrSiteVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetWindow      uintptr
	EnableModeless uintptr
} /* urlmon.h:207:9 */

type IInternetSecurityMgrSiteVtbl = IInternetSecurityMgrSiteVtbl1 /* urlmon.h:7412:3 */

// ****************************************************************************
//
// IInternetSecurityManager interface

type PUAF = uint32    /* urlmon.h:7517:3 */
type PUAFOUT = uint32 /* urlmon.h:7521:3 */

type SZM_FLAGS = uint32 /* urlmon.h:7527:3 */
type IInternetSecurityManagerVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	SetSecuritySite   uintptr
	GetSecuritySite   uintptr
	MapUrlToZone      uintptr
	GetSecurityId     uintptr
	ProcessUrlAction  uintptr
	QueryCustomPolicy uintptr
	SetZoneMapping    uintptr
	GetZoneMappings   uintptr
} /* urlmon.h:212:9 */

type IInternetSecurityManagerVtbl = IInternetSecurityManagerVtbl1 /* urlmon.h:7656:3 */
type IInternetHostSecurityManagerVtbl1 = struct {
	QueryInterface    uintptr
	AddRef            uintptr
	Release           uintptr
	GetSecurityId     uintptr
	ProcessUrlAction  uintptr
	QueryCustomPolicy uintptr
} /* urlmon.h:232:9 */

type IInternetHostSecurityManagerVtbl = IInternetHostSecurityManagerVtbl1 /* urlmon.h:8537:3 */

// ****************************************************************************
//
// IInternetZoneManager interface

type LPURLZONEMANAGER = uintptr /* urlmon.h:8832:30 */

type URLZONE = int32 /* urlmon.h:8845:3 */

type URLTEMPLATE = uint32 /* urlmon.h:8858:3 */

type ZAFLAGS = uint32 /* urlmon.h:8879:3 */

type _ZONEATTRIBUTES = struct {
	cbSize                 ULONG
	szDisplayName          [260]WCHAR
	szDescription          [200]WCHAR
	szIconPath             [260]WCHAR
	dwTemplateMinLevel     DWORD
	dwTemplateRecommended  DWORD
	dwTemplateCurrentLevel DWORD
	dwFlags                DWORD
} /* urlmon.h:8881:9 */

type ZONEATTRIBUTES = _ZONEATTRIBUTES /* urlmon.h:8890:3 */
type LPZONEATTRIBUTES = uintptr       /* urlmon.h:8891:32 */

type URLZONEREG = uint32 /* urlmon.h:8898:3 */
type IInternetZoneManagerVtbl1 = struct {
	QueryInterface             uintptr
	AddRef                     uintptr
	Release                    uintptr
	GetZoneAttributes          uintptr
	SetZoneAttributes          uintptr
	GetZoneCustomPolicy        uintptr
	SetZoneCustomPolicy        uintptr
	GetZoneActionPolicy        uintptr
	SetZoneActionPolicy        uintptr
	PromptAction               uintptr
	LogAction                  uintptr
	CreateZoneEnumerator       uintptr
	GetZoneAt                  uintptr
	DestroyZoneEnumerator      uintptr
	CopyTemplatePoliciesToZone uintptr
} /* urlmon.h:237:9 */

type IInternetZoneManagerVtbl = IInternetZoneManagerVtbl1 /* urlmon.h:9073:3 */

type _tagCODEBASEHOLD = struct {
	cbSize      ULONG
	szDistUnit  LPWSTR
	szCodeBase  LPWSTR
	dwVersionMS DWORD
	dwVersionLS DWORD
	dwStyle     DWORD
} /* urlmon.h:9899:9 */

type CODEBASEHOLD = _tagCODEBASEHOLD /* urlmon.h:9906:3 */
type LPCODEBASEHOLD = uintptr        /* urlmon.h:9907:33 */

type _tagSOFTDISTINFO = struct {
	cbSize                ULONG
	dwFlags               DWORD
	dwAdState             DWORD
	szTitle               LPWSTR
	szAbstract            LPWSTR
	szHREF                LPWSTR
	dwInstalledVersionMS  DWORD
	dwInstalledVersionLS  DWORD
	dwUpdateVersionMS     DWORD
	dwUpdateVersionLS     DWORD
	dwAdvertisedVersionMS DWORD
	dwAdvertisedVersionLS DWORD
	dwReserved            DWORD
} /* urlmon.h:9909:9 */

type SOFTDISTINFO = _tagSOFTDISTINFO /* urlmon.h:9923:3 */
type LPSOFTDISTINFO = uintptr        /* urlmon.h:9924:33 */
type ISoftDistExtVtbl1 = struct {
	QueryInterface               uintptr
	AddRef                       uintptr
	Release                      uintptr
	ProcessSoftDist              uintptr
	GetFirstCodeBase             uintptr
	GetNextCodeBase              uintptr
	AsyncInstallDistributionUnit uintptr
} /* urlmon.h:252:9 */

type ISoftDistExtVtbl = ISoftDistExtVtbl1 /* urlmon.h:10001:3 */

// ****************************************************************************
//
// ICatalogFileInfo interface

type LPCATALOGFILEINFO = uintptr /* urlmon.h:10102:26 */
type ICatalogFileInfoVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetCatalogFile uintptr
	GetJavaTrust   uintptr
} /* urlmon.h:257:9 */

type ICatalogFileInfoVtbl = ICatalogFileInfoVtbl1 /* urlmon.h:10145:3 */

// ****************************************************************************
//
// IDataFilter interface

type LPDATAFILTER = uintptr /* urlmon.h:10212:21 */
type IDataFilterVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	DoEncode         uintptr
	DoDecode         uintptr
	SetEncodingLevel uintptr
} /* urlmon.h:262:9 */

type IDataFilterVtbl = IDataFilterVtbl1 /* urlmon.h:10294:3 */

type _tagPROTOCOLFILTERDATA = struct {
	cbSize        DWORD
	pProtocolSink uintptr
	pProtocol     uintptr
	pUnk          uintptr
	dwFilterFlags DWORD
} /* urlmon.h:10383:9 */

type PROTOCOLFILTERDATA = _tagPROTOCOLFILTERDATA /* urlmon.h:10389:3 */

// ****************************************************************************
//
// IEncodingFilterFactory interface

type LPENCODINGFILTERFACTORY = uintptr /* urlmon.h:10397:32 */

type _tagDATAINFO = struct {
	ulTotalSize      ULONG
	ulavrPacketSize  ULONG
	ulConnectSpeed   ULONG
	ulProcessorSpeed ULONG
} /* urlmon.h:10399:9 */

type DATAINFO = _tagDATAINFO /* urlmon.h:10404:3 */
type IEncodingFilterFactoryVtbl1 = struct {
	QueryInterface   uintptr
	AddRef           uintptr
	Release          uintptr
	FindBestFilter   uintptr
	GetDefaultFilter uintptr
} /* urlmon.h:267:9 */

type IEncodingFilterFactoryVtbl = IEncodingFilterFactoryVtbl1 /* urlmon.h:10457:3 */

type _tagHIT_LOGGING_INFO = struct {
	dwStructSize      DWORD
	lpszLoggedUrlName LPSTR
	StartTime         SYSTEMTIME
	EndTime           SYSTEMTIME
	lpszExtendedInfo  LPSTR
} /* urlmon.h:10527:9 */

type HIT_LOGGING_INFO = _tagHIT_LOGGING_INFO /* urlmon.h:10533:3 */
type LPHIT_LOGGING_INFO = uintptr            /* urlmon.h:10534:37 */

type CONFIRMSAFETY = struct {
	clsid   CLSID
	pUnk    uintptr
	dwFlags DWORD
} /* urlmon.h:10540:1 */

// ****************************************************************************
//
// IWrappedProtocol interface

type LPIWRAPPEDPROTOCOL = uintptr /* urlmon.h:10559:26 */
type IWrappedProtocolVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetWrapperCode uintptr
} /* urlmon.h:272:9 */

type IWrappedProtocolVtbl = IWrappedProtocolVtbl1 /* urlmon.h:10597:3 */

// ****************************************************************************
//
// IGetBindHandle interface

type LPGETBINDHANDLE = uintptr /* urlmon.h:10653:24 */

type BINDHANDLETYPES = uint32 /* urlmon.h:10659:3 */
type IGetBindHandleVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	GetBindHandle  uintptr
} /* urlmon.h:277:9 */

type IGetBindHandleVtbl = IGetBindHandleVtbl1 /* urlmon.h:10697:3 */

type _tagPROTOCOL_ARGUMENT = struct {
	szMethod    LPCWSTR
	szTargetUrl LPCWSTR
} /* urlmon.h:10747:9 */

type PROTOCOL_ARGUMENT = _tagPROTOCOL_ARGUMENT /* urlmon.h:10750:3 */
type LPPROTOCOL_ARGUMENT = uintptr             /* urlmon.h:10751:38 */

// ****************************************************************************
//
// IBindCallbackRedirect interface

type LPBINDCALLBACKREDIRECT = uintptr /* urlmon.h:10763:31 */
type IBindCallbackRedirectVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Redirect       uintptr
} /* urlmon.h:282:9 */

type IBindCallbackRedirectVtbl = IBindCallbackRedirectVtbl1 /* urlmon.h:10801:3 */

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/propidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IPropertyStorage1 = struct{ lpVtbl uintptr } /* propidl.h:22:9 */

// End additional prototypes

//** Autogenerated by WIDL 1.6 from include/propidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// Forward declarations

type IPropertyStorage = IPropertyStorage1 /* propidl.h:22:36 */

type IPropertySetStorage1 = struct{ lpVtbl uintptr } /* propidl.h:27:9 */

type IPropertySetStorage = IPropertySetStorage1 /* propidl.h:27:39 */

type IEnumSTATPROPSTG1 = struct{ lpVtbl uintptr } /* propidl.h:32:9 */

type IEnumSTATPROPSTG = IEnumSTATPROPSTG1 /* propidl.h:32:36 */

type IEnumSTATPROPSETSTG1 = struct{ lpVtbl uintptr } /* propidl.h:37:9 */

type IEnumSTATPROPSETSTG = IEnumSTATPROPSETSTG1 /* propidl.h:37:39 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/wtypes.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oaidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type tagVersionedStream = struct {
	guidVersion GUID
	pStream     uintptr
} /* propidl.h:75:9 */

// Headers for imported files

//** Autogenerated by WIDL 1.6 from include/wtypes.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/objidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

//** Autogenerated by WIDL 1.6 from include/oaidl.idl - Do not edit **

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// Make sure we have internals defined.
// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.
// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type VERSIONEDSTREAM = tagVersionedStream /* propidl.h:78:3 */
type LPVERSIONEDSTREAM = uintptr          /* propidl.h:79:35 */

type tagCAC = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:101:9 */

type CAC = tagCAC /* propidl.h:104:3 */
type tagCAUB = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:105:9 */

type CAUB = tagCAUB /* propidl.h:108:3 */
type tagCAI = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:109:9 */

type CAI = tagCAI /* propidl.h:112:3 */
type tagCAUI = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:113:9 */

type CAUI = tagCAUI /* propidl.h:116:3 */
type tagCAL = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:117:9 */

type CAL = tagCAL /* propidl.h:120:3 */
type tagCAUL = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:121:9 */

type CAUL = tagCAUL /* propidl.h:124:3 */
type tagCAFLT = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:125:9 */

type CAFLT = tagCAFLT /* propidl.h:128:3 */
type tagCADBL = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:129:9 */

type CADBL = tagCADBL /* propidl.h:132:3 */
type tagCACY = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:133:9 */

type CACY = tagCACY /* propidl.h:136:3 */
type tagCADATE = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:137:9 */

type CADATE = tagCADATE /* propidl.h:140:3 */
type tagCABSTR = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:141:9 */

type CABSTR = tagCABSTR /* propidl.h:144:3 */
type tagCABSTRBLOB = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:145:9 */

type CABSTRBLOB = tagCABSTRBLOB /* propidl.h:148:3 */
type tagCABOOL = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:149:9 */

type CABOOL = tagCABOOL /* propidl.h:152:3 */
type tagCASCODE = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:153:9 */

type CASCODE = tagCASCODE /* propidl.h:156:3 */
type tagCAPROPVARIANT = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:157:9 */

type CAPROPVARIANT = tagCAPROPVARIANT /* propidl.h:160:3 */
type tagCAH = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:161:9 */

type CAH = tagCAH /* propidl.h:164:3 */
type tagCAUH = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:165:9 */

type CAUH = tagCAUH /* propidl.h:168:3 */
type tagCALPSTR = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:169:9 */

type CALPSTR = tagCALPSTR /* propidl.h:172:3 */
type tagCALPWSTR = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:173:9 */

type CALPWSTR = tagCALPWSTR /* propidl.h:176:3 */
type tagCAFILETIME = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:177:9 */

type CAFILETIME = tagCAFILETIME /* propidl.h:180:3 */
type tagCACLIPDATA = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:181:9 */

type CACLIPDATA = tagCACLIPDATA /* propidl.h:184:3 */
type tagCACLSID = struct {
	cElems ULONG
	pElems uintptr
} /* propidl.h:185:9 */

type CACLSID = tagCACLSID /* propidl.h:188:3 */

type PROPVAR_PAD1 = WORD /* propidl.h:195:14 */
type PROPVAR_PAD2 = WORD /* propidl.h:196:14 */
type PROPVAR_PAD3 = WORD /* propidl.h:197:14 */

type LPPROPVARIANT = uintptr /* propidl.h:294:31 */

type tagPROPSPEC = struct {
	ulKind ULONG
	__4    struct{ propid PROPID }
} /* propidl.h:404:9 */

type PROPSPEC = tagPROPSPEC /* propidl.h:410:3 */

type tagSTATPROPSTG = struct {
	lpwstrName LPOLESTR
	propid     PROPID
	vt         VARTYPE
	_          [2]byte
} /* propidl.h:412:9 */

type STATPROPSTG = tagSTATPROPSTG /* propidl.h:416:3 */

type tagSTATPROPSETSTG = struct {
	fmtid       FMTID
	clsid       CLSID
	grfFlags    DWORD
	mtime       FILETIME
	ctime       FILETIME
	atime       FILETIME
	dwOSVersion DWORD
} /* propidl.h:423:9 */

type STATPROPSETSTG = tagSTATPROPSETSTG /* propidl.h:431:3 */
type IPropertyStorageVtbl1 = struct {
	QueryInterface      uintptr
	AddRef              uintptr
	Release             uintptr
	ReadMultiple        uintptr
	WriteMultiple       uintptr
	DeleteMultiple      uintptr
	ReadPropertyNames   uintptr
	WritePropertyNames  uintptr
	DeletePropertyNames uintptr
	Commit              uintptr
	Revert              uintptr
	Enum                uintptr
	SetTimes            uintptr
	SetClass            uintptr
	Stat                uintptr
} /* propidl.h:22:9 */

type IPropertyStorageVtbl = IPropertyStorageVtbl1 /* propidl.h:575:3 */

// ****************************************************************************
//
// IPropertySetStorage interface

type LPPROPERTYSETSTORAGE = uintptr /* propidl.h:770:29 */
type IPropertySetStorageVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Create         uintptr
	Open           uintptr
	Delete         uintptr
	Enum           uintptr
} /* propidl.h:27:9 */

type IPropertySetStorageVtbl = IPropertySetStorageVtbl1 /* propidl.h:839:3 */

// ****************************************************************************
//
// IEnumSTATPROPSTG interface

type LPENUMSTATPROPSTG = uintptr /* propidl.h:932:26 */
type IEnumSTATPROPSTGVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* propidl.h:32:9 */

type IEnumSTATPROPSTGVtbl = IEnumSTATPROPSTGVtbl1 /* propidl.h:992:3 */

// ****************************************************************************
//
// IEnumSTATPROPSETSTG interface

type LPENUMSTATPROPSETSTG = uintptr /* propidl.h:1090:29 */
type IEnumSTATPROPSETSTGVtbl1 = struct {
	QueryInterface uintptr
	AddRef         uintptr
	Release        uintptr
	Next           uintptr
	Skip           uintptr
	Reset          uintptr
	Clone          uintptr
} /* propidl.h:37:9 */

type IEnumSTATPROPSETSTGVtbl = IEnumSTATPROPSETSTGVtbl1 /* propidl.h:1150:3 */

type LPPROPERTYSTORAGE = uintptr /* propidl.h:1242:26 */

type tagSERIALIZEDPROPERTYVALUE = struct {
	dwType DWORD
	rgb    [1]BYTE
	_      [3]byte
} /* propidl.h:1268:9 */

type SERIALIZEDPROPERTYVALUE = tagSERIALIZEDPROPERTYVALUE /* propidl.h:1271:3 */

type NUMPARSE = struct {
	cDig       INT
	dwInFlags  ULONG
	dwOutFlags ULONG
	cchUsed    INT
	nBaseShift INT
	nPwr10     INT
} /* oleauto.h:429:3 */

type UDATE = struct {
	st         SYSTEMTIME
	wDayOfYear USHORT
} /* oleauto.h:530:3 */

type REGKIND = uint32 /* oleauto.h:592:3 */

type tagPARAMDATA = struct {
	szName uintptr
	vt     VARTYPE
	_      [2]byte
} /* oleauto.h:611:9 */

type PARAMDATA = tagPARAMDATA /* oleauto.h:614:3 */
type LPPARAMDATA = uintptr    /* oleauto.h:614:13 */

type tagMETHODDATA = struct {
	szName   uintptr
	ppdata   uintptr
	dispid   DISPID
	iMeth    UINT
	cc       CALLCONV
	cArgs    UINT
	wFlags   WORD
	vtReturn VARTYPE
} /* oleauto.h:616:9 */

type METHODDATA = tagMETHODDATA /* oleauto.h:625:3 */
type LPMETHODDATA = uintptr     /* oleauto.h:625:14 */

type tagINTERFACEDATA = struct {
	pmethdata uintptr
	cMembers  UINT
} /* oleauto.h:627:9 */

type INTERFACEDATA = tagINTERFACEDATA /* oleauto.h:630:3 */
type LPINTERFACEDATA = uintptr        /* oleauto.h:630:17 */

type _OLESTREAM = struct{ lpstbl LPOLESTREAMVTBL } /* ole2.h:109:9 */

type LPOLESTREAM = uintptr /* ole2.h:109:27 */

type _OLESTREAMVTBL = struct {
	Get uintptr
	Put uintptr
} /* ole2.h:109:9 */

type OLESTREAMVTBL = _OLESTREAMVTBL /* ole2.h:114:3 */
type LPOLESTREAMVTBL = uintptr      /* ole2.h:115:23 */

type OLESTREAM = _OLESTREAM /* ole2.h:119:3 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER.PD within this package.

// *
// This file is part of the mingw-w64 runtime package.
// No warranty is given; refer to the file DISCLAIMER within this package.

type SE_OBJECT_TYPE = uint32 /* accctrl.h:36:5 */

type TRUSTEE_TYPE = uint32 /* accctrl.h:48:5 */
type TRUSTEE_FORM = uint32 /* accctrl.h:55:5 */

type MULTIPLE_TRUSTEE_OPERATION = uint32 /* accctrl.h:60:5 */

type _OBJECTS_AND_SID = struct {
	ObjectsPresent          DWORD
	ObjectTypeGuid          GUID
	InheritedObjectTypeGuid GUID
	pSid                    uintptr
} /* accctrl.h:62:11 */

type OBJECTS_AND_SID = _OBJECTS_AND_SID /* accctrl.h:67:5 */
type POBJECTS_AND_SID = uintptr         /* accctrl.h:67:22 */

type _OBJECTS_AND_NAME_A = struct {
	ObjectsPresent          DWORD
	ObjectType              SE_OBJECT_TYPE
	ObjectTypeName          LPSTR
	InheritedObjectTypeName LPSTR
	ptstrName               LPSTR
} /* accctrl.h:69:11 */

type OBJECTS_AND_NAME_A = _OBJECTS_AND_NAME_A /* accctrl.h:75:5 */
type POBJECTS_AND_NAME_A = uintptr            /* accctrl.h:75:25 */

type _OBJECTS_AND_NAME_W = struct {
	ObjectsPresent          DWORD
	ObjectType              SE_OBJECT_TYPE
	ObjectTypeName          LPWSTR
	InheritedObjectTypeName LPWSTR
	ptstrName               LPWSTR
} /* accctrl.h:77:11 */

type OBJECTS_AND_NAME_W = _OBJECTS_AND_NAME_W /* accctrl.h:83:5 */
type POBJECTS_AND_NAME_W = uintptr            /* accctrl.h:83:25 */

type OBJECTS_AND_NAME_ = OBJECTS_AND_NAME_W   /* accctrl.h:85:3 */
type POBJECTS_AND_NAME_ = POBJECTS_AND_NAME_W /* accctrl.h:86:3 */

type _TRUSTEE_A = struct {
	pMultipleTrustee         uintptr
	MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION
	TrusteeForm              TRUSTEE_FORM
	TrusteeType              TRUSTEE_TYPE
	ptstrName                LPSTR
} /* accctrl.h:88:11 */

type TRUSTEE_A = _TRUSTEE_A /* accctrl.h:103:5 */
type PTRUSTEE_A = uintptr   /* accctrl.h:103:16 */
type TRUSTEEA = _TRUSTEE_A  /* accctrl.h:103:29 */
type PTRUSTEEA = uintptr    /* accctrl.h:103:39 */

type _TRUSTEE_W = struct {
	pMultipleTrustee         uintptr
	MultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION
	TrusteeForm              TRUSTEE_FORM
	TrusteeType              TRUSTEE_TYPE
	ptstrName                LPWSTR
} /* accctrl.h:105:11 */

type TRUSTEE_W = _TRUSTEE_W /* accctrl.h:120:5 */
type PTRUSTEE_W = uintptr   /* accctrl.h:120:16 */
type TRUSTEEW = _TRUSTEE_W  /* accctrl.h:120:29 */
type PTRUSTEEW = uintptr    /* accctrl.h:120:39 */

type TRUSTEE_ = TRUSTEE_W   /* accctrl.h:122:3 */
type PTRUSTEE_ = PTRUSTEE_W /* accctrl.h:123:3 */
type TRUSTEE = TRUSTEEW     /* accctrl.h:124:3 */
type PTRUSTEE = PTRUSTEEW   /* accctrl.h:125:3 */

type ACCESS_MODE = uint32 /* accctrl.h:135:5 */

type _EXPLICIT_ACCESS_A = struct {
	grfAccessPermissions DWORD
	grfAccessMode        ACCESS_MODE
	grfInheritance       DWORD
	Trustee              TRUSTEE_A
} /* accctrl.h:148:11 */

type EXPLICIT_ACCESS_A = _EXPLICIT_ACCESS_A /* accctrl.h:153:5 */
type PEXPLICIT_ACCESS_A = uintptr           /* accctrl.h:153:24 */
type EXPLICIT_ACCESSA = _EXPLICIT_ACCESS_A  /* accctrl.h:153:45 */
type PEXPLICIT_ACCESSA = uintptr            /* accctrl.h:153:63 */

type _EXPLICIT_ACCESS_W = struct {
	grfAccessPermissions DWORD
	grfAccessMode        ACCESS_MODE
	grfInheritance       DWORD
	Trustee              TRUSTEE_W
} /* accctrl.h:155:11 */

type EXPLICIT_ACCESS_W = _EXPLICIT_ACCESS_W /* accctrl.h:160:5 */
type PEXPLICIT_ACCESS_W = uintptr           /* accctrl.h:160:24 */
type EXPLICIT_ACCESSW = _EXPLICIT_ACCESS_W  /* accctrl.h:160:45 */
type PEXPLICIT_ACCESSW = uintptr            /* accctrl.h:160:63 */

type EXPLICIT_ACCESS_ = EXPLICIT_ACCESS_W   /* accctrl.h:162:3 */
type PEXPLICIT_ACCESS_ = PEXPLICIT_ACCESS_W /* accctrl.h:163:3 */
type EXPLICIT_ACCESS = EXPLICIT_ACCESSW     /* accctrl.h:164:3 */
type PEXPLICIT_ACCESS = PEXPLICIT_ACCESSW   /* accctrl.h:165:3 */

type ACCESS_RIGHTS = ULONG    /* accctrl.h:172:17 */
type PACCESS_RIGHTS = uintptr /* accctrl.h:172:32 */
type INHERIT_FLAGS = ULONG    /* accctrl.h:173:17 */
type PINHERIT_FLAGS = uintptr /* accctrl.h:173:32 */

type _ACTRL_ACCESS_ENTRYA = struct {
	Trustee            TRUSTEE_A
	fAccessFlags       ULONG
	Access             ACCESS_RIGHTS
	ProvSpecificAccess ACCESS_RIGHTS
	Inheritance        INHERIT_FLAGS
	lpInheritProperty  LPSTR
} /* accctrl.h:175:11 */

type ACTRL_ACCESS_ENTRYA = _ACTRL_ACCESS_ENTRYA /* accctrl.h:182:5 */
type PACTRL_ACCESS_ENTRYA = uintptr             /* accctrl.h:182:26 */

type _ACTRL_ACCESS_ENTRYW = struct {
	Trustee            TRUSTEE_W
	fAccessFlags       ULONG
	Access             ACCESS_RIGHTS
	ProvSpecificAccess ACCESS_RIGHTS
	Inheritance        INHERIT_FLAGS
	lpInheritProperty  LPWSTR
} /* accctrl.h:184:11 */

type ACTRL_ACCESS_ENTRYW = _ACTRL_ACCESS_ENTRYW /* accctrl.h:191:5 */
type PACTRL_ACCESS_ENTRYW = uintptr             /* accctrl.h:191:26 */

type ACTRL_ACCESS_ENTRY = ACTRL_ACCESS_ENTRYW   /* accctrl.h:193:3 */
type PACTRL_ACCESS_ENTRY = PACTRL_ACCESS_ENTRYW /* accctrl.h:194:3 */

type _ACTRL_ACCESS_ENTRY_LISTA = struct {
	cEntries    ULONG
	pAccessList uintptr
} /* accctrl.h:196:11 */

type ACTRL_ACCESS_ENTRY_LISTA = _ACTRL_ACCESS_ENTRY_LISTA /* accctrl.h:202:5 */
type PACTRL_ACCESS_ENTRY_LISTA = uintptr                  /* accctrl.h:202:31 */

type _ACTRL_ACCESS_ENTRY_LISTW = struct {
	cEntries    ULONG
	pAccessList uintptr
} /* accctrl.h:204:11 */

type ACTRL_ACCESS_ENTRY_LISTW = _ACTRL_ACCESS_ENTRY_LISTW /* accctrl.h:210:5 */
type PACTRL_ACCESS_ENTRY_LISTW = uintptr                  /* accctrl.h:210:31 */

type ACTRL_ACCESS_ENTRY_LIST = ACTRL_ACCESS_ENTRY_LISTW   /* accctrl.h:212:3 */
type PACTRL_ACCESS_ENTRY_LIST = PACTRL_ACCESS_ENTRY_LISTW /* accctrl.h:213:3 */

type _ACTRL_PROPERTY_ENTRYA = struct {
	lpProperty       LPSTR
	pAccessEntryList PACTRL_ACCESS_ENTRY_LISTA
	fListFlags       ULONG
} /* accctrl.h:215:11 */

type ACTRL_PROPERTY_ENTRYA = _ACTRL_PROPERTY_ENTRYA /* accctrl.h:219:5 */
type PACTRL_PROPERTY_ENTRYA = uintptr               /* accctrl.h:219:28 */

type _ACTRL_PROPERTY_ENTRYW = struct {
	lpProperty       LPWSTR
	pAccessEntryList PACTRL_ACCESS_ENTRY_LISTW
	fListFlags       ULONG
} /* accctrl.h:221:11 */

type ACTRL_PROPERTY_ENTRYW = _ACTRL_PROPERTY_ENTRYW /* accctrl.h:225:5 */
type PACTRL_PROPERTY_ENTRYW = uintptr               /* accctrl.h:225:28 */

type ACTRL_PROPERTY_ENTRY = ACTRL_PROPERTY_ENTRYW   /* accctrl.h:227:3 */
type PACTRL_PROPERTY_ENTRY = PACTRL_PROPERTY_ENTRYW /* accctrl.h:228:3 */

type _ACTRL_ALISTA = struct {
	cEntries            ULONG
	pPropertyAccessList PACTRL_PROPERTY_ENTRYA
} /* accctrl.h:230:11 */

type ACTRL_ACCESSA = _ACTRL_ALISTA /* accctrl.h:236:5 */
type PACTRL_ACCESSA = uintptr      /* accctrl.h:236:20 */
type ACTRL_AUDITA = _ACTRL_ALISTA  /* accctrl.h:236:37 */
type PACTRL_AUDITA = uintptr       /* accctrl.h:236:51 */

type _ACTRL_ALISTW = struct {
	cEntries            ULONG
	pPropertyAccessList PACTRL_PROPERTY_ENTRYW
} /* accctrl.h:238:11 */

type ACTRL_ACCESSW = _ACTRL_ALISTW /* accctrl.h:244:5 */
type PACTRL_ACCESSW = uintptr      /* accctrl.h:244:20 */
type ACTRL_AUDITW = _ACTRL_ALISTW  /* accctrl.h:244:37 */
type PACTRL_AUDITW = uintptr       /* accctrl.h:244:51 */

type ACTRL_ACCESS = ACTRL_ACCESSW   /* accctrl.h:246:3 */
type PACTRL_ACCESS = PACTRL_ACCESSW /* accctrl.h:247:3 */
type ACTRL_AUDIT = ACTRL_AUDITW     /* accctrl.h:248:3 */
type PACTRL_AUDIT = PACTRL_AUDITW   /* accctrl.h:249:3 */

type _TRUSTEE_ACCESSA = struct {
	lpProperty      LPSTR
	Access          ACCESS_RIGHTS
	fAccessFlags    ULONG
	fReturnedAccess ULONG
} /* accctrl.h:259:11 */

type TRUSTEE_ACCESSA = _TRUSTEE_ACCESSA /* accctrl.h:264:5 */
type PTRUSTEE_ACCESSA = uintptr         /* accctrl.h:264:22 */

type _TRUSTEE_ACCESSW = struct {
	lpProperty      LPWSTR
	Access          ACCESS_RIGHTS
	fAccessFlags    ULONG
	fReturnedAccess ULONG
} /* accctrl.h:266:11 */

type TRUSTEE_ACCESSW = _TRUSTEE_ACCESSW /* accctrl.h:271:5 */
type PTRUSTEE_ACCESSW = uintptr         /* accctrl.h:271:22 */

type TRUSTEE_ACCESS = TRUSTEE_ACCESSW   /* accctrl.h:273:3 */
type PTRUSTEE_ACCESS = PTRUSTEE_ACCESSW /* accctrl.h:274:3 */

type _ACTRL_OVERLAPPED = struct {
	__0       struct{ Provider PVOID }
	Reserved2 ULONG
	hEvent    HANDLE
} /* accctrl.h:389:11 */

type ACTRL_OVERLAPPED = _ACTRL_OVERLAPPED /* accctrl.h:396:5 */
type PACTRL_OVERLAPPED = uintptr          /* accctrl.h:396:23 */

type _ACTRL_ACCESS_INFOA = struct {
	fAccessPermission      ULONG
	lpAccessPermissionName LPSTR
} /* accctrl.h:398:11 */

type ACTRL_ACCESS_INFOA = _ACTRL_ACCESS_INFOA /* accctrl.h:401:5 */
type PACTRL_ACCESS_INFOA = uintptr            /* accctrl.h:401:25 */

type _ACTRL_ACCESS_INFOW = struct {
	fAccessPermission      ULONG
	lpAccessPermissionName LPWSTR
} /* accctrl.h:403:11 */

type ACTRL_ACCESS_INFOW = _ACTRL_ACCESS_INFOW /* accctrl.h:406:5 */
type PACTRL_ACCESS_INFOW = uintptr            /* accctrl.h:406:25 */

type ACTRL_ACCESS_INFO = ACTRL_ACCESS_INFOW   /* accctrl.h:408:3 */
type PACTRL_ACCESS_INFO = PACTRL_ACCESS_INFOW /* accctrl.h:409:3 */

type _ACTRL_CONTROL_INFOA = struct {
	lpControlId   LPSTR
	lpControlName LPSTR
} /* accctrl.h:411:11 */

type ACTRL_CONTROL_INFOA = _ACTRL_CONTROL_INFOA /* accctrl.h:414:5 */
type PACTRL_CONTROL_INFOA = uintptr             /* accctrl.h:414:26 */

type _ACTRL_CONTROL_INFOW = struct {
	lpControlId   LPWSTR
	lpControlName LPWSTR
} /* accctrl.h:416:11 */

type ACTRL_CONTROL_INFOW = _ACTRL_CONTROL_INFOW /* accctrl.h:419:5 */
type PACTRL_CONTROL_INFOW = uintptr             /* accctrl.h:419:26 */

type ACTRL_CONTROL_INFO = ACTRL_CONTROL_INFOW   /* accctrl.h:421:3 */
type PACTRL_CONTROL_INFO = PACTRL_CONTROL_INFOW /* accctrl.h:422:3 */

type PROG_INVOKE_SETTING = uint32   /* accctrl.h:438:5 */
type PPROG_INVOKE_SETTING = uintptr /* accctrl.h:438:26 */

type _FN_OBJECT_MGR_FUNCTIONS = struct{ Placeholder ULONG } /* accctrl.h:440:11 */

type FN_OBJECT_MGR_FUNCTS = _FN_OBJECT_MGR_FUNCTIONS /* accctrl.h:442:5 */
type PFN_OBJECT_MGR_FUNCTS = uintptr                 /* accctrl.h:442:27 */

type _INHERITED_FROMA = struct {
	GenerationGap LONG
	AncestorName  LPSTR
} /* accctrl.h:444:11 */

type INHERITED_FROMA = _INHERITED_FROMA /* accctrl.h:447:5 */
type PINHERITED_FROMA = uintptr         /* accctrl.h:447:22 */

type _INHERITED_FROMW = struct {
	GenerationGap LONG
	AncestorName  LPWSTR
} /* accctrl.h:449:11 */

type INHERITED_FROMW = _INHERITED_FROMW /* accctrl.h:452:5 */
type PINHERITED_FROMW = uintptr         /* accctrl.h:452:22 */

type INHERITED_FROM = INHERITED_FROMW   /* accctrl.h:454:3 */
type PINHERITED_FROM = PINHERITED_FROMW /* accctrl.h:455:3 */

type FN_PROGRESS = uintptr /* aclapi.h:20:16 */

//----------------------------------------------------------------------
//
// TclplatformtestInit --
//
//	Defines commands that test platform specific functionality for Windows
//	platforms.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Defines new commands.
//
//----------------------------------------------------------------------

func TclplatformtestInit(tls *libc.TLS, interp uintptr) int32 { /* tclWinTest.c:69:1: */
	// Add commands for platform specific tests for Windows here.

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10087, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestchmodCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10097, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TesteventloopCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10111, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestvolumetypeCmd})),
		uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10126, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestwinclockCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10139, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestwinsleepCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10152, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestExceptionCmd})), uintptr(0), uintptr(0))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr, ClientData, uintptr) Tcl_Command)(unsafe.Pointer(tclStubsPtr + 392)))(tls, interp, ts+10163, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
	}{TestSizeCmd})), uintptr(0), uintptr(0))
	return 0
}

//----------------------------------------------------------------------
//
// TesteventloopCmd --
//
//	This function implements the "testeventloop" command. It is used to
//	test the Tcl notifier from an "external" event loop (i.e. not
//	Tcl_DoOneEvent()).
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TesteventloopCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:106:1: */
	bp := tls.Alloc(72)
	defer tls.Free(72)
	// Pointer to integer on stack frame of
	// innermost invocation of the "wait"
	// subcommand.

	if objc < 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+10172)
		return 1
	}
	if libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+10183) == 0 {
		*(*int32)(unsafe.Pointer(framePtr)) = 1
	} else if libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+10188) == 0 {
		var oldFramePtr uintptr
		// var done int32 at bp+40, 4

		var oldMode int32 = (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(tclStubsPtr + 940)))(tls, 1)

		// Save the old stack frame pointer and set up the current frame.

		oldFramePtr = framePtr
		framePtr = bp + 40 /* &done */

		// Enter a standard Windows event loop until the flag changes. Note
		// that we do not explicitly call Tcl_ServiceEvent().

		*(*int32)(unsafe.Pointer(bp + 40 /* done */)) = 0
		for !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
			// var msg MSG at bp+44, 28

			if !(libc.XGetMessageW(tls, bp+44, uintptr(0), uint32(0), uint32(0)) != 0) {
				// The application is exiting, so repost the quit message and
				// start unwinding.

				libc.XPostQuitMessage(tls, int32((*MSG)(unsafe.Pointer(bp+44 /* &msg */)).wParam))
				break
			}
			libc.XTranslateMessage(tls, bp+44 /* &msg */)
			libc.XDispatchMessageW(tls, bp+44 /* &msg */)
		}
		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(tclStubsPtr + 940)))(tls, oldMode)
		framePtr = oldFramePtr
	} else {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+1428, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))),
			ts+10193 /* "\": must be done ..." */, uintptr(0)))
		return 1
	}
	return 0
}

var framePtr uintptr = uintptr(0) /* tclWinTest.c:112:16 */

//----------------------------------------------------------------------
//
// Testvolumetype --
//
//	This function implements the "testvolumetype" command. It is used to
//	check the volume type (FAT, NTFS) of a volume.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestvolumetypeCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:182:1: */
	bp := tls.Alloc(96)
	defer tls.Free(96)

	var found int32
	// var volType [32]int8 at bp+64, 32

	var path uintptr

	if objc > 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+10217)
		return 1
	}
	if objc == 2 {
		// path has to be really a proper volume, but we don't get query APIs
		// for that until NT5

		path = (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)))
	} else {
		path = uintptr(0)
	}
	found = libc.XGetVolumeInformationA(tls, path, uintptr(0), uint32(0), uintptr(0), uintptr(0), uintptr(0), bp+64, /* &volType[0] */
		uint32(32))

	if found == 0 {
		(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, ts+10224,
			func() uintptr {
				if path != 0 {
					return path
				}
				return ts + 1481 /* "" */
			}(), ts+1803 /* "\"" */, uintptr(0)))
		(*(*func(*libc.TLS, DWORD))(unsafe.Pointer(tclIntPlatStubsPtr + 8)))(tls, libc.XGetLastError(tls))
		return 1
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp+40, bp+64, uintptr(0)))
	return 0
}

//----------------------------------------------------------------------
//
// TestwinclockCmd --
//
//	Command that returns the seconds and microseconds portions of the
//	system clock and of the Tcl clock so that they can be compared to
//	validate that the Tcl clock is staying in sync.
//
// Usage:
//	testclock
//
// Parameters:
//	None.
//
// Results:
//	Returns a standard Tcl result comprising a four-element list: the
//	seconds and microseconds portions of the system clock, and the seconds
//	and microseconds portions of the Tcl clock.
//
// Side effects:
//	None.
//
//----------------------------------------------------------------------

func TestwinclockCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:248:1: */
	bp := tls.Alloc(48)
	defer tls.Free(48)

	// The Posix epoch, expressed as a Windows
	// FILETIME
	// var tclTime Tcl_Time at bp+8, 8
	// Tcl clock
	// var sysTime FILETIME at bp+16, 8
	// System clock
	var result uintptr // Result of the command
	// var t1 LARGE_INTEGER at bp+24, 8

	// var t2 LARGE_INTEGER at bp+32, 8

	// var p1 LARGE_INTEGER at bp, 8

	// var p2 LARGE_INTEGER at bp+40, 8

	if objc != 1 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+1481)
		return 1
	}

	libc.XQueryPerformanceCounter(tls, bp /* &p1 */)

	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 1936)))(tls, bp+8)
	libc.XGetSystemTimeAsFileTime(tls, bp+16 /* &sysTime */)
	*(*DWORD)(unsafe.Pointer(bp + 24 /* &t1 */)) = posixEpoch.dwLowDateTime
	*(*LONG)(unsafe.Pointer(bp + 24 /* &t1 */)) = LONG(posixEpoch.dwHighDateTime)
	*(*DWORD)(unsafe.Pointer(bp + 32 /* &t2 */)) = (*FILETIME)(unsafe.Pointer(bp + 16 /* &sysTime */)).dwLowDateTime
	*(*LONG)(unsafe.Pointer(bp + 32 /* &t2 */)) = LONG((*FILETIME)(unsafe.Pointer(bp + 16 /* &sysTime */)).dwHighDateTime)
	*(*LONGLONG)(unsafe.Pointer(bp + 32 /* &t2 */ /* &.QuadPart */)) -= *(*LONGLONG)(unsafe.Pointer(bp + 24))

	libc.XQueryPerformanceCounter(tls, bp+40 /* &p2 */)

	result = (*(*func(*libc.TLS) uintptr)(unsafe.Pointer(tclStubsPtr + 228)))(tls)
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result,
		(*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32(*(*LONGLONG)(unsafe.Pointer(bp + 32))/int64(10000000))))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result,
		(*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32(*(*LONGLONG)(unsafe.Pointer(bp + 32))/int64(10)%int64(1000000))))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32((*Tcl_Time)(unsafe.Pointer(bp+8)).sec)))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result, (*(*func(*libc.TLS, int32) uintptr)(unsafe.Pointer(tclStubsPtr + 216)))(tls, int32((*Tcl_Time)(unsafe.Pointer(bp+8)).usec)))

	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result, (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, *(*LONGLONG)(unsafe.Pointer(bp))))
	(*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 184)))(tls, interp, result, (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, *(*LONGLONG)(unsafe.Pointer(bp + 40))))

	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, result)

	return 0
}

var posixEpoch = FILETIME{
	dwLowDateTime:  0xD53E8000,
	dwHighDateTime: DWORD(0x019DB1DE)} /* tclWinTest.c:254:27 */

func TestwinsleepCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:297:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var ms int32 at bp, 4

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+10256)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp) != 0 {
		return 1
	}
	libc.XSleep(tls, DWORD(*(*int32)(unsafe.Pointer(bp /* ms */))))
	return 0
}

func TestSizeCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:317:1: */
	var statPtr uintptr
	_ = statPtr
	if !(objc != 2) {
		goto __1
	}
	goto syntax
__1:
	;
	if !(libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+10259) == 0) {
		goto __2
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, int64(unsafe.Sizeof(time_t(0)))))
	return 0
__2:
	;
	if !(libc.Xstrcmp(tls, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4))), ts+10266) == 0) {
		goto __3
	}
	(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 948)))(tls, interp, (*(*func(*libc.TLS, Tcl_WideInt) uintptr)(unsafe.Pointer(tclStubsPtr + 1960)))(tls, int64(unsafe.Sizeof(int32(0)))))
	return 0
__3:
	;

syntax:
	(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+10275)
	return 1
}

//----------------------------------------------------------------------
//
// TestExceptionCmd --
//
//	Causes this process to end with the named exception. Used for testing
//	Tcl_WaitPid().
//
// Usage:
//	testexcept <type>
//
// Parameters:
//	Type of exception.
//
// Results:
//	None, this process closes now and doesn't return.
//
// Side effects:
//	This Tcl process closes, hard... Bang!
//
//----------------------------------------------------------------------

func TestExceptionCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:365:1: */
	bp := tls.Alloc(4)
	defer tls.Free(4)

	// var cmd int32 at bp, 4

	if objc != 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 0, objv, ts+10291)
		return 1
	}
	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 1224)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), uintptr(unsafe.Pointer(&cmds)), int32(unsafe.Sizeof(uintptr(0))), ts+4595, 0, bp) != 0 {
		return 1
	}

	// Make sure the GPF dialog doesn't popup.

	libc.XSetErrorMode(tls, uint32(0x0001|0x0002))

	// As Tcl does not handle structured exceptions, this falls all the way
	// back up the instruction stack to the C run-time portion that called
	// main() where the process will now be terminated with this exception
	// code by the default handler the C run-time provides.

	// SMASH!
	libc.XRaiseException(tls, exceptions[*(*int32)(unsafe.Pointer(bp /* cmd */))], uint32(0x1), uint32(0), uintptr(0))

	// NOTREACHED
	return 0
}

var cmds = [22]uintptr{
	ts + 10311 /* "access_violation" */, ts + 10328 /* "datatype_misalig..." */, ts + 10350, /* "array_bounds" */
	ts + 10363 /* "float_denormal" */, ts + 10378 /* "float_divbyzero" */, ts + 10394, /* "float_inexact" */
	ts + 10408 /* "float_invalidop" */, ts + 10424 /* "float_overflow" */, ts + 10439 /* "float_stack" */, ts + 10451, /* "float_underflow" */
	ts + 10467 /* "int_divbyzero" */, ts + 10481 /* "int_overflow" */, ts + 10494 /* "private_instruct..." */, ts + 10514, /* "inpageerror" */
	ts + 10526 /* "illegal_instruct..." */, ts + 10546 /* "noncontinue" */, ts + 10558, /* "stack_overflow" */
	ts + 10573 /* "invalid_disp" */, ts + 10586 /* "guard_page" */, ts + 10597 /* "invalid_handle" */, ts + 10612, /* "ctrl+c" */
	uintptr(0),
} /* tclWinTest.c:371:23 */
var exceptions = [21]DWORD{
	0xC0000005, 0x80000002,
	0xC000008C, 0xC000008D,
	0xC000008E, 0xC000008F,
	0xC0000090, 0xC0000091,
	0xC0000092, 0xC0000093,
	0xC0000094, 0xC0000095,
	0xC0000096, 0xC0000006,
	0xC000001D, 0xC0000025,
	0xC00000FD, 0xC0000026,
	0x80000001, 0xC0000008, 0xC000013A,
} /* tclWinTest.c:380:24 */

func TestplatformChmod(tls *libc.TLS, nativePath uintptr, pmode int32) int32 { /* tclWinTest.c:424:1: */
	bp := tls.Alloc(44)
	defer tls.Free(44)

	// References to security functions (only available on NT and later).

	var set_readOnly WINBOOL
	var acl_readOnly_found WINBOOL
	// var curAclPresent WINBOOL at bp+16, 4

	// var curAclDefaulted WINBOOL at bp+24, 4

	// var userSidAuthority SID_IDENTIFIER_AUTHORITY at bp+8, 6

	var secDesc uintptr
	// var secDescLen DWORD at bp, 4

	var attr DWORD
	var newAclSize DWORD
	// var ACLSize ACL_SIZE_INFORMATION at bp+28, 12

	// var curAcl PACL at bp+20, 4

	var newAcl PACL
	var j WORD
	var userSid uintptr
	var userDomain uintptr
	var res int32
	// var secDescLen2 DWORD at bp+4, 4

	var pACEd uintptr
	// var pACE2 LPVOID at bp+40, 4

	var phACE2 uintptr
	set_readOnly = libc.BoolInt32(!(pmode&0222 != 0))
	acl_readOnly_found = 0
	*(*SID_IDENTIFIER_AUTHORITY)(unsafe.Pointer(bp + 8 /* userSidAuthority */)) = SID_IDENTIFIER_AUTHORITY{
		Value: [6]BYTE{BYTE(0), BYTE(0), BYTE(0), BYTE(0), BYTE(0), BYTE(1)},
	}
	secDesc = uintptr(0)
	newAcl = uintptr(0)
	userSid = uintptr(0)
	userDomain = uintptr(0)
	res = 0

	// Process the chmod request.

	attr = libc.XGetFileAttributesA(tls, nativePath)

	// nativePath not found

	if !(attr == 0xffffffff) {
		goto __1
	}
	res = -1
	goto done
__1:
	;

	// If nativePath is not a directory, there is no special handling.

	if !!(attr&DWORD(0x00000010) != 0) {
		goto __2
	}
	goto done
__2:
	;

	// Set the result to error, if the ACL change is successful it will be
	// reset to 0.

	res = -1

	// Read the security descriptor for the directory. Note the first call
	// obtains the size of the security descriptor.

	if !!(libc.XGetFileSecurityA(tls, nativePath, infoBits, uintptr(0), uint32(0), bp) != 0) {
		goto __3
	}
	*(*DWORD)(unsafe.Pointer(bp + 4 /* secDescLen2 */)) = DWORD(0)

	if !(libc.XGetLastError(tls) != DWORD(122)) {
		goto __4
	}
	goto done
__4:
	;

	secDesc = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(*(*DWORD)(unsafe.Pointer(bp))))
	if !(!(libc.XGetFileSecurityA(tls, nativePath, infoBits,
		secDesc, *(*DWORD)(unsafe.Pointer(bp)), bp+4) != 0) ||
		*(*DWORD)(unsafe.Pointer(bp)) < *(*DWORD)(unsafe.Pointer(bp + 4))) {
		goto __5
	}
	goto done
__5:
	;
__3:
	;

	// Get the World SID.

	userSid = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(libc.XGetSidLengthRequired(tls, UCHAR(1))))
	libc.XInitializeSid(tls, userSid, bp+8 /* &userSidAuthority */, BYTE(1))
	*(*DWORD)(unsafe.Pointer(libc.XGetSidSubAuthority(tls, userSid, uint32(0)))) = DWORD(0x00000000)

	// If curAclPresent == false then curAcl and curAclDefaulted not valid.

	if !!(libc.XGetSecurityDescriptorDacl(tls, secDesc,
		bp+16, bp+20, bp+24) != 0) {
		goto __6
	}
	goto done
__6:
	;
	if !(!(*(*WINBOOL)(unsafe.Pointer(bp + 16)) != 0) || !(*(*PACL)(unsafe.Pointer(bp + 20)) != 0)) {
		goto __7
	}
	(*ACL_SIZE_INFORMATION)(unsafe.Pointer(bp + 28 /* &ACLSize */)).AclBytesInUse = DWORD(0)
	(*ACL_SIZE_INFORMATION)(unsafe.Pointer(bp + 28 /* &ACLSize */)).AceCount = DWORD(0)
	goto __8
__7:
	if !!(libc.XGetAclInformation(tls, *(*PACL)(unsafe.Pointer(bp + 20)), bp+28, uint32(unsafe.Sizeof(ACL_SIZE_INFORMATION{})),
		AclSizeInformation) != 0) {
		goto __9
	}
	goto done
__9:
	;
__8:
	;

	// Allocate memory for the new ACL.

	newAclSize = (*ACL_SIZE_INFORMATION)(unsafe.Pointer(bp+28)).AclBytesInUse + DWORD(unsafe.Sizeof(ACCESS_DENIED_ACE{})) +
		libc.XGetLengthSid(tls, userSid) - DWORD(unsafe.Sizeof(DWORD(0)))
	newAcl = (*(*func(*libc.TLS, uint32) uintptr)(unsafe.Pointer(tclStubsPtr + 20)))(tls, uint32(newAclSize))

	// Initialize the new ACL.

	if !!(libc.XInitializeAcl(tls, newAcl, newAclSize, uint32(2)) != 0) {
		goto __10
	}
	goto done
__10:
	;

	// Add denied to make readonly, this will be known as a "read-only tag".

	if !(set_readOnly != 0 && !(libc.XAddAccessDeniedAce(tls, newAcl, uint32(2),
		readOnlyMask, userSid) != 0)) {
		goto __11
	}
	goto done
__11:
	;

	acl_readOnly_found = 0
	j = WORD(0)
__12:
	if !(DWORD(j) < (*ACL_SIZE_INFORMATION)(unsafe.Pointer(bp+28)).AceCount) {
		goto __14
	}

	if !!(libc.XGetAce(tls, *(*PACL)(unsafe.Pointer(bp + 20)), uint32(j), bp+40) != 0) {
		goto __15
	}
	goto done
__15:
	;

	phACE2 = *(*LPVOID)(unsafe.Pointer(bp + 40 /* pACE2 */))

	// Do NOT propagate inherited ACEs.

	if !(int32((*ACE_HEADER)(unsafe.Pointer(phACE2)).AceFlags)&0x10 != 0) {
		goto __16
	}
	goto __13
__16:
	;

	// Skip the "read-only tag" restriction (either added above, or it is
	// being removed).

	if !(int32((*ACE_HEADER)(unsafe.Pointer(phACE2)).AceType) == 0x1) {
		goto __17
	}
	pACEd = phACE2

	if !((*ACCESS_DENIED_ACE)(unsafe.Pointer(pACEd)).Mask == readOnlyMask &&
		libc.XEqualSid(tls, userSid, pACEd+8) != 0) {
		goto __18
	}
	acl_readOnly_found = 1
	goto __13
__18:
	;
__17:
	;

	// Copy the current ACE from the old to the new ACL.

	if !!(libc.XAddAce(tls, newAcl, uint32(2), 0xffffffff, *(*LPVOID)(unsafe.Pointer(bp + 40)),
		uint32((*ACE_HEADER)(unsafe.Pointer(*(*LPVOID)(unsafe.Pointer(bp + 40)))).AceSize)) != 0) {
		goto __19
	}
	goto done
__19:
	;
	goto __13
__13:
	j++
	goto __12
	goto __14
__14:
	;

	// Apply the new ACL. Note PROTECTED_DACL_SECURITY_INFORMATION can be used
	// to remove inherited ACL (we need to overwrite the default ACL's in this case)

	if !(set_readOnly == acl_readOnly_found || libc.XSetNamedSecurityInfoA(tls,
		nativePath, SE_FILE_OBJECT,
		uint32(0x00000004),
		uintptr(0), uintptr(0), newAcl, uintptr(0)) == DWORD(0)) {
		goto __20
	}
	res = 0
__20:
	;

done:
	if !(secDesc != 0) {
		goto __21
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, secDesc)
__21:
	;
	if !(newAcl != 0) {
		goto __22
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, newAcl)
__22:
	;
	if !(userSid != 0) {
		goto __23
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, userSid)
__23:
	;
	if !(userDomain != 0) {
		goto __24
	}
	(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 24)))(tls, userDomain)
__24:
	;

	if !(res != 0) {
		goto __25
	}
	return res
__25:
	;

	// Run normal chmod command.

	return libc.Xchmod(tls, nativePath, pmode)
}

var infoBits SECURITY_INFORMATION = SECURITY_INFORMATION(0x00000001 |
	0x00000002 | 0x00000004) /* tclWinTest.c:428:39 */
var readOnlyMask DWORD = DWORD(0x0040 | 0x0002 |
	0x0004 | 0x0010 | 0x0004 |
	0x0002 |
	0x00010000) /* tclWinTest.c:431:24 */

//---------------------------------------------------------------------------
//
// TestchmodCmd --
//
//	Implements the "testchmod" cmd. Used when testing "file" command. The
//	only attribute used by the Windows platform is the user write flag; if
//	this is not set, the file is made read-only. Otherwise, the file is
//	made read-write.
//
// Results:
//	A standard Tcl result.
//
// Side effects:
//	Changes permissions of specified files.
//
//---------------------------------------------------------------------------

func TestchmodCmd(tls *libc.TLS, dummy ClientData, interp uintptr, objc int32, objv uintptr) int32 { /* tclWinTest.c:654:1: */
	bp := tls.Alloc(256)
	defer tls.Free(256)

	var i int32
	// var mode int32 at bp+40, 4

	if objc < 2 {
		(*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 1064)))(tls, interp, 1, objv, ts+10619)
		return 1
	}

	if (*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(tclStubsPtr + 160)))(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1)*4)), bp+40) != 0 {
		return 1
	}

	for i = 2; i < objc; i++ {
		// var buffer Tcl_DString at bp+44, 212

		var translated uintptr

		translated = (*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1004)))(tls, interp, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 1368)))(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4))), bp+44)
		if translated == uintptr(0) {
			return 1
		}
		if TestplatformChmod(tls, translated, *(*int32)(unsafe.Pointer(bp + 40 /* mode */))) != 0 {
			(*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(tclStubsPtr + 288)))(tls, interp, libc.VaList(bp, translated, ts+3813, (*(*func(*libc.TLS, uintptr) uintptr)(unsafe.Pointer(tclStubsPtr + 824)))(tls, interp),
				uintptr(0)))
			return 1
		}
		(*(*func(*libc.TLS, uintptr))(unsafe.Pointer(tclStubsPtr + 488)))(tls, bp+44)
	}
	return 0
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

type time_t1 = int32 /* crtdefs.h:136:20 */

// The next short section of defines are only done when not running on Windows
// or some other strange platform.

type _stati64 = struct {
	st_dev   _dev_t
	st_ino   _ino_t
	st_mode  uint16
	st_nlink int16
	st_uid   int16
	st_gid   int16
	_        [2]byte
	st_rdev  _dev_t
	_        [4]byte
	st_size  int64
	st_atime int32
	st_mtime int32
	st_ctime int32
	_        [4]byte
} /* tcl.h:446:10 */

type Tcl_OldStat_1 = uintptr /* tcl.h:645:21 */

type TclStubs1 = struct {
	magic                                  int32
	hooks                                  uintptr
	tcl_PkgProvideEx                       uintptr
	tcl_PkgRequireEx                       uintptr
	tcl_Panic                              uintptr
	tcl_Alloc                              uintptr
	tcl_Free                               uintptr
	tcl_Realloc                            uintptr
	tcl_DbCkalloc                          uintptr
	tcl_DbCkfree                           uintptr
	tcl_DbCkrealloc                        uintptr
	reserved9                              uintptr
	reserved10                             uintptr
	tcl_SetTimer                           uintptr
	tcl_Sleep                              uintptr
	tcl_WaitForEvent                       uintptr
	tcl_AppendAllObjTypes                  uintptr
	tcl_AppendStringsToObj                 uintptr
	tcl_AppendToObj                        uintptr
	tcl_ConcatObj                          uintptr
	tcl_ConvertToType                      uintptr
	tcl_DbDecrRefCount                     uintptr
	tcl_DbIncrRefCount                     uintptr
	tcl_DbIsShared                         uintptr
	tcl_DbNewBooleanObj                    uintptr
	tcl_DbNewByteArrayObj                  uintptr
	tcl_DbNewDoubleObj                     uintptr
	tcl_DbNewListObj                       uintptr
	tcl_DbNewLongObj                       uintptr
	tcl_DbNewObj                           uintptr
	tcl_DbNewStringObj                     uintptr
	tcl_DuplicateObj                       uintptr
	tclFreeObj                             uintptr
	tcl_GetBoolean                         uintptr
	tcl_GetBooleanFromObj                  uintptr
	tcl_GetByteArrayFromObj                uintptr
	tcl_GetDouble                          uintptr
	tcl_GetDoubleFromObj                   uintptr
	tcl_GetIndexFromObj                    uintptr
	tcl_GetInt                             uintptr
	tcl_GetIntFromObj                      uintptr
	tcl_GetLongFromObj                     uintptr
	tcl_GetObjType                         uintptr
	tcl_GetStringFromObj                   uintptr
	tcl_InvalidateStringRep                uintptr
	tcl_ListObjAppendList                  uintptr
	tcl_ListObjAppendElement               uintptr
	tcl_ListObjGetElements                 uintptr
	tcl_ListObjIndex                       uintptr
	tcl_ListObjLength                      uintptr
	tcl_ListObjReplace                     uintptr
	tcl_NewBooleanObj                      uintptr
	tcl_NewByteArrayObj                    uintptr
	tcl_NewDoubleObj                       uintptr
	tcl_NewIntObj                          uintptr
	tcl_NewListObj                         uintptr
	tcl_NewLongObj                         uintptr
	tcl_NewObj                             uintptr
	tcl_NewStringObj                       uintptr
	tcl_SetBooleanObj                      uintptr
	tcl_SetByteArrayLength                 uintptr
	tcl_SetByteArrayObj                    uintptr
	tcl_SetDoubleObj                       uintptr
	tcl_SetIntObj                          uintptr
	tcl_SetListObj                         uintptr
	tcl_SetLongObj                         uintptr
	tcl_SetObjLength                       uintptr
	tcl_SetStringObj                       uintptr
	tcl_AddErrorInfo                       uintptr
	tcl_AddObjErrorInfo                    uintptr
	tcl_AllowExceptions                    uintptr
	tcl_AppendElement                      uintptr
	tcl_AppendResult                       uintptr
	tcl_AsyncCreate                        uintptr
	tcl_AsyncDelete                        uintptr
	tcl_AsyncInvoke                        uintptr
	tcl_AsyncMark                          uintptr
	tcl_AsyncReady                         uintptr
	tcl_BackgroundError                    uintptr
	tcl_Backslash                          uintptr
	tcl_BadChannelOption                   uintptr
	tcl_CallWhenDeleted                    uintptr
	tcl_CancelIdleCall                     uintptr
	tcl_Close                              uintptr
	tcl_CommandComplete                    uintptr
	tcl_Concat                             uintptr
	tcl_ConvertElement                     uintptr
	tcl_ConvertCountedElement              uintptr
	tcl_CreateAlias                        uintptr
	tcl_CreateAliasObj                     uintptr
	tcl_CreateChannel                      uintptr
	tcl_CreateChannelHandler               uintptr
	tcl_CreateCloseHandler                 uintptr
	tcl_CreateCommand                      uintptr
	tcl_CreateEventSource                  uintptr
	tcl_CreateExitHandler                  uintptr
	tcl_CreateInterp                       uintptr
	tcl_CreateMathFunc                     uintptr
	tcl_CreateObjCommand                   uintptr
	tcl_CreateSlave                        uintptr
	tcl_CreateTimerHandler                 uintptr
	tcl_CreateTrace                        uintptr
	tcl_DeleteAssocData                    uintptr
	tcl_DeleteChannelHandler               uintptr
	tcl_DeleteCloseHandler                 uintptr
	tcl_DeleteCommand                      uintptr
	tcl_DeleteCommandFromToken             uintptr
	tcl_DeleteEvents                       uintptr
	tcl_DeleteEventSource                  uintptr
	tcl_DeleteExitHandler                  uintptr
	tcl_DeleteHashEntry                    uintptr
	tcl_DeleteHashTable                    uintptr
	tcl_DeleteInterp                       uintptr
	tcl_DetachPids                         uintptr
	tcl_DeleteTimerHandler                 uintptr
	tcl_DeleteTrace                        uintptr
	tcl_DontCallWhenDeleted                uintptr
	tcl_DoOneEvent                         uintptr
	tcl_DoWhenIdle                         uintptr
	tcl_DStringAppend                      uintptr
	tcl_DStringAppendElement               uintptr
	tcl_DStringEndSublist                  uintptr
	tcl_DStringFree                        uintptr
	tcl_DStringGetResult                   uintptr
	tcl_DStringInit                        uintptr
	tcl_DStringResult                      uintptr
	tcl_DStringSetLength                   uintptr
	tcl_DStringStartSublist                uintptr
	tcl_Eof                                uintptr
	tcl_ErrnoId                            uintptr
	tcl_ErrnoMsg                           uintptr
	tcl_Eval                               uintptr
	tcl_EvalFile                           uintptr
	tcl_EvalObj                            uintptr
	tcl_EventuallyFree                     uintptr
	tcl_Exit                               uintptr
	tcl_ExposeCommand                      uintptr
	tcl_ExprBoolean                        uintptr
	tcl_ExprBooleanObj                     uintptr
	tcl_ExprDouble                         uintptr
	tcl_ExprDoubleObj                      uintptr
	tcl_ExprLong                           uintptr
	tcl_ExprLongObj                        uintptr
	tcl_ExprObj                            uintptr
	tcl_ExprString                         uintptr
	tcl_Finalize                           uintptr
	tcl_FindExecutable                     uintptr
	tcl_FirstHashEntry                     uintptr
	tcl_Flush                              uintptr
	tcl_FreeResult                         uintptr
	tcl_GetAlias                           uintptr
	tcl_GetAliasObj                        uintptr
	tcl_GetAssocData                       uintptr
	tcl_GetChannel                         uintptr
	tcl_GetChannelBufferSize               uintptr
	tcl_GetChannelHandle                   uintptr
	tcl_GetChannelInstanceData             uintptr
	tcl_GetChannelMode                     uintptr
	tcl_GetChannelName                     uintptr
	tcl_GetChannelOption                   uintptr
	tcl_GetChannelType                     uintptr
	tcl_GetCommandInfo                     uintptr
	tcl_GetCommandName                     uintptr
	tcl_GetErrno                           uintptr
	tcl_GetHostName                        uintptr
	tcl_GetInterpPath                      uintptr
	tcl_GetMaster                          uintptr
	tcl_GetNameOfExecutable                uintptr
	tcl_GetObjResult                       uintptr
	reserved167                            uintptr
	tcl_GetPathType                        uintptr
	tcl_Gets                               uintptr
	tcl_GetsObj                            uintptr
	tcl_GetServiceMode                     uintptr
	tcl_GetSlave                           uintptr
	tcl_GetStdChannel                      uintptr
	tcl_GetStringResult                    uintptr
	tcl_GetVar                             uintptr
	tcl_GetVar2                            uintptr
	tcl_GlobalEval                         uintptr
	tcl_GlobalEvalObj                      uintptr
	tcl_HideCommand                        uintptr
	tcl_Init                               uintptr
	tcl_InitHashTable                      uintptr
	tcl_InputBlocked                       uintptr
	tcl_InputBuffered                      uintptr
	tcl_InterpDeleted                      uintptr
	tcl_IsSafe                             uintptr
	tcl_JoinPath                           uintptr
	tcl_LinkVar                            uintptr
	reserved188                            uintptr
	tcl_MakeFileChannel                    uintptr
	tcl_MakeSafe                           uintptr
	tcl_MakeTcpClientChannel               uintptr
	tcl_Merge                              uintptr
	tcl_NextHashEntry                      uintptr
	tcl_NotifyChannel                      uintptr
	tcl_ObjGetVar2                         uintptr
	tcl_ObjSetVar2                         uintptr
	tcl_OpenCommandChannel                 uintptr
	tcl_OpenFileChannel                    uintptr
	tcl_OpenTcpClient                      uintptr
	tcl_OpenTcpServer                      uintptr
	tcl_Preserve                           uintptr
	tcl_PrintDouble                        uintptr
	tcl_PutEnv                             uintptr
	tcl_PosixError                         uintptr
	tcl_QueueEvent                         uintptr
	tcl_Read                               uintptr
	tcl_ReapDetachedProcs                  uintptr
	tcl_RecordAndEval                      uintptr
	tcl_RecordAndEvalObj                   uintptr
	tcl_RegisterChannel                    uintptr
	tcl_RegisterObjType                    uintptr
	tcl_RegExpCompile                      uintptr
	tcl_RegExpExec                         uintptr
	tcl_RegExpMatch                        uintptr
	tcl_RegExpRange                        uintptr
	tcl_Release                            uintptr
	tcl_ResetResult                        uintptr
	tcl_ScanElement                        uintptr
	tcl_ScanCountedElement                 uintptr
	tcl_SeekOld                            uintptr
	tcl_ServiceAll                         uintptr
	tcl_ServiceEvent                       uintptr
	tcl_SetAssocData                       uintptr
	tcl_SetChannelBufferSize               uintptr
	tcl_SetChannelOption                   uintptr
	tcl_SetCommandInfo                     uintptr
	tcl_SetErrno                           uintptr
	tcl_SetErrorCode                       uintptr
	tcl_SetMaxBlockTime                    uintptr
	tcl_SetPanicProc                       uintptr
	tcl_SetRecursionLimit                  uintptr
	tcl_SetResult                          uintptr
	tcl_SetServiceMode                     uintptr
	tcl_SetObjErrorCode                    uintptr
	tcl_SetObjResult                       uintptr
	tcl_SetStdChannel                      uintptr
	tcl_SetVar                             uintptr
	tcl_SetVar2                            uintptr
	tcl_SignalId                           uintptr
	tcl_SignalMsg                          uintptr
	tcl_SourceRCFile                       uintptr
	tcl_SplitList                          uintptr
	tcl_SplitPath                          uintptr
	tcl_StaticPackage                      uintptr
	tcl_StringMatch                        uintptr
	tcl_TellOld                            uintptr
	tcl_TraceVar                           uintptr
	tcl_TraceVar2                          uintptr
	tcl_TranslateFileName                  uintptr
	tcl_Ungets                             uintptr
	tcl_UnlinkVar                          uintptr
	tcl_UnregisterChannel                  uintptr
	tcl_UnsetVar                           uintptr
	tcl_UnsetVar2                          uintptr
	tcl_UntraceVar                         uintptr
	tcl_UntraceVar2                        uintptr
	tcl_UpdateLinkedVar                    uintptr
	tcl_UpVar                              uintptr
	tcl_UpVar2                             uintptr
	tcl_VarEval                            uintptr
	tcl_VarTraceInfo                       uintptr
	tcl_VarTraceInfo2                      uintptr
	tcl_Write                              uintptr
	tcl_WrongNumArgs                       uintptr
	tcl_DumpActiveMemory                   uintptr
	tcl_ValidateAllMemory                  uintptr
	tcl_AppendResultVA                     uintptr
	tcl_AppendStringsToObjVA               uintptr
	tcl_HashStats                          uintptr
	tcl_ParseVar                           uintptr
	tcl_PkgPresent                         uintptr
	tcl_PkgPresentEx                       uintptr
	tcl_PkgProvide                         uintptr
	tcl_PkgRequire                         uintptr
	tcl_SetErrorCodeVA                     uintptr
	tcl_VarEvalVA                          uintptr
	tcl_WaitPid                            uintptr
	tcl_PanicVA                            uintptr
	tcl_GetVersion                         uintptr
	tcl_InitMemory                         uintptr
	tcl_StackChannel                       uintptr
	tcl_UnstackChannel                     uintptr
	tcl_GetStackedChannel                  uintptr
	tcl_SetMainLoop                        uintptr
	reserved285                            uintptr
	tcl_AppendObjToObj                     uintptr
	tcl_CreateEncoding                     uintptr
	tcl_CreateThreadExitHandler            uintptr
	tcl_DeleteThreadExitHandler            uintptr
	tcl_DiscardResult                      uintptr
	tcl_EvalEx                             uintptr
	tcl_EvalObjv                           uintptr
	tcl_EvalObjEx                          uintptr
	tcl_ExitThread                         uintptr
	tcl_ExternalToUtf                      uintptr
	tcl_ExternalToUtfDString               uintptr
	tcl_FinalizeThread                     uintptr
	tcl_FinalizeNotifier                   uintptr
	tcl_FreeEncoding                       uintptr
	tcl_GetCurrentThread                   uintptr
	tcl_GetEncoding                        uintptr
	tcl_GetEncodingName                    uintptr
	tcl_GetEncodingNames                   uintptr
	tcl_GetIndexFromObjStruct              uintptr
	tcl_GetThreadData                      uintptr
	tcl_GetVar2Ex                          uintptr
	tcl_InitNotifier                       uintptr
	tcl_MutexLock                          uintptr
	tcl_MutexUnlock                        uintptr
	tcl_ConditionNotify                    uintptr
	tcl_ConditionWait                      uintptr
	tcl_NumUtfChars                        uintptr
	tcl_ReadChars                          uintptr
	tcl_RestoreResult                      uintptr
	tcl_SaveResult                         uintptr
	tcl_SetSystemEncoding                  uintptr
	tcl_SetVar2Ex                          uintptr
	tcl_ThreadAlert                        uintptr
	tcl_ThreadQueueEvent                   uintptr
	tcl_UniCharAtIndex                     uintptr
	tcl_UniCharToLower                     uintptr
	tcl_UniCharToTitle                     uintptr
	tcl_UniCharToUpper                     uintptr
	tcl_UniCharToUtf                       uintptr
	tcl_UtfAtIndex                         uintptr
	tcl_UtfCharComplete                    uintptr
	tcl_UtfBackslash                       uintptr
	tcl_UtfFindFirst                       uintptr
	tcl_UtfFindLast                        uintptr
	tcl_UtfNext                            uintptr
	tcl_UtfPrev                            uintptr
	tcl_UtfToExternal                      uintptr
	tcl_UtfToExternalDString               uintptr
	tcl_UtfToLower                         uintptr
	tcl_UtfToTitle                         uintptr
	tcl_UtfToUniChar                       uintptr
	tcl_UtfToUpper                         uintptr
	tcl_WriteChars                         uintptr
	tcl_WriteObj                           uintptr
	tcl_GetString                          uintptr
	tcl_GetDefaultEncodingDir              uintptr
	tcl_SetDefaultEncodingDir              uintptr
	tcl_AlertNotifier                      uintptr
	tcl_ServiceModeHook                    uintptr
	tcl_UniCharIsAlnum                     uintptr
	tcl_UniCharIsAlpha                     uintptr
	tcl_UniCharIsDigit                     uintptr
	tcl_UniCharIsLower                     uintptr
	tcl_UniCharIsSpace                     uintptr
	tcl_UniCharIsUpper                     uintptr
	tcl_UniCharIsWordChar                  uintptr
	tcl_UniCharLen                         uintptr
	tcl_UniCharNcmp                        uintptr
	tcl_UniCharToUtfDString                uintptr
	tcl_UtfToUniCharDString                uintptr
	tcl_GetRegExpFromObj                   uintptr
	tcl_EvalTokens                         uintptr
	tcl_FreeParse                          uintptr
	tcl_LogCommandInfo                     uintptr
	tcl_ParseBraces                        uintptr
	tcl_ParseCommand                       uintptr
	tcl_ParseExpr                          uintptr
	tcl_ParseQuotedString                  uintptr
	tcl_ParseVarName                       uintptr
	tcl_GetCwd                             uintptr
	tcl_Chdir                              uintptr
	tcl_Access                             uintptr
	tcl_Stat                               uintptr
	tcl_UtfNcmp                            uintptr
	tcl_UtfNcasecmp                        uintptr
	tcl_StringCaseMatch                    uintptr
	tcl_UniCharIsControl                   uintptr
	tcl_UniCharIsGraph                     uintptr
	tcl_UniCharIsPrint                     uintptr
	tcl_UniCharIsPunct                     uintptr
	tcl_RegExpExecObj                      uintptr
	tcl_RegExpGetInfo                      uintptr
	tcl_NewUnicodeObj                      uintptr
	tcl_SetUnicodeObj                      uintptr
	tcl_GetCharLength                      uintptr
	tcl_GetUniChar                         uintptr
	tcl_GetUnicode                         uintptr
	tcl_GetRange                           uintptr
	tcl_AppendUnicodeToObj                 uintptr
	tcl_RegExpMatchObj                     uintptr
	tcl_SetNotifier                        uintptr
	tcl_GetAllocMutex                      uintptr
	tcl_GetChannelNames                    uintptr
	tcl_GetChannelNamesEx                  uintptr
	tcl_ProcObjCmd                         uintptr
	tcl_ConditionFinalize                  uintptr
	tcl_MutexFinalize                      uintptr
	tcl_CreateThread                       uintptr
	tcl_ReadRaw                            uintptr
	tcl_WriteRaw                           uintptr
	tcl_GetTopChannel                      uintptr
	tcl_ChannelBuffered                    uintptr
	tcl_ChannelName                        uintptr
	tcl_ChannelVersion                     uintptr
	tcl_ChannelBlockModeProc               uintptr
	tcl_ChannelCloseProc                   uintptr
	tcl_ChannelClose2Proc                  uintptr
	tcl_ChannelInputProc                   uintptr
	tcl_ChannelOutputProc                  uintptr
	tcl_ChannelSeekProc                    uintptr
	tcl_ChannelSetOptionProc               uintptr
	tcl_ChannelGetOptionProc               uintptr
	tcl_ChannelWatchProc                   uintptr
	tcl_ChannelGetHandleProc               uintptr
	tcl_ChannelFlushProc                   uintptr
	tcl_ChannelHandlerProc                 uintptr
	tcl_JoinThread                         uintptr
	tcl_IsChannelShared                    uintptr
	tcl_IsChannelRegistered                uintptr
	tcl_CutChannel                         uintptr
	tcl_SpliceChannel                      uintptr
	tcl_ClearChannelHandlers               uintptr
	tcl_IsChannelExisting                  uintptr
	tcl_UniCharNcasecmp                    uintptr
	tcl_UniCharCaseMatch                   uintptr
	tcl_FindHashEntry                      uintptr
	tcl_CreateHashEntry                    uintptr
	tcl_InitCustomHashTable                uintptr
	tcl_InitObjHashTable                   uintptr
	tcl_CommandTraceInfo                   uintptr
	tcl_TraceCommand                       uintptr
	tcl_UntraceCommand                     uintptr
	tcl_AttemptAlloc                       uintptr
	tcl_AttemptDbCkalloc                   uintptr
	tcl_AttemptRealloc                     uintptr
	tcl_AttemptDbCkrealloc                 uintptr
	tcl_AttemptSetObjLength                uintptr
	tcl_GetChannelThread                   uintptr
	tcl_GetUnicodeFromObj                  uintptr
	tcl_GetMathFuncInfo                    uintptr
	tcl_ListMathFuncs                      uintptr
	tcl_SubstObj                           uintptr
	tcl_DetachChannel                      uintptr
	tcl_IsStandardChannel                  uintptr
	tcl_FSCopyFile                         uintptr
	tcl_FSCopyDirectory                    uintptr
	tcl_FSCreateDirectory                  uintptr
	tcl_FSDeleteFile                       uintptr
	tcl_FSLoadFile                         uintptr
	tcl_FSMatchInDirectory                 uintptr
	tcl_FSLink                             uintptr
	tcl_FSRemoveDirectory                  uintptr
	tcl_FSRenameFile                       uintptr
	tcl_FSLstat                            uintptr
	tcl_FSUtime                            uintptr
	tcl_FSFileAttrsGet                     uintptr
	tcl_FSFileAttrsSet                     uintptr
	tcl_FSFileAttrStrings                  uintptr
	tcl_FSStat                             uintptr
	tcl_FSAccess                           uintptr
	tcl_FSOpenFileChannel                  uintptr
	tcl_FSGetCwd                           uintptr
	tcl_FSChdir                            uintptr
	tcl_FSConvertToPathType                uintptr
	tcl_FSJoinPath                         uintptr
	tcl_FSSplitPath                        uintptr
	tcl_FSEqualPaths                       uintptr
	tcl_FSGetNormalizedPath                uintptr
	tcl_FSJoinToPath                       uintptr
	tcl_FSGetInternalRep                   uintptr
	tcl_FSGetTranslatedPath                uintptr
	tcl_FSEvalFile                         uintptr
	tcl_FSNewNativePath                    uintptr
	tcl_FSGetNativePath                    uintptr
	tcl_FSFileSystemInfo                   uintptr
	tcl_FSPathSeparator                    uintptr
	tcl_FSListVolumes                      uintptr
	tcl_FSRegister                         uintptr
	tcl_FSUnregister                       uintptr
	tcl_FSData                             uintptr
	tcl_FSGetTranslatedStringPath          uintptr
	tcl_FSGetFileSystemForPath             uintptr
	tcl_FSGetPathType                      uintptr
	tcl_OutputBuffered                     uintptr
	tcl_FSMountsChanged                    uintptr
	tcl_EvalTokensStandard                 uintptr
	tcl_GetTime                            uintptr
	tcl_CreateObjTrace                     uintptr
	tcl_GetCommandInfoFromToken            uintptr
	tcl_SetCommandInfoFromToken            uintptr
	tcl_DbNewWideIntObj                    uintptr
	tcl_GetWideIntFromObj                  uintptr
	tcl_NewWideIntObj                      uintptr
	tcl_SetWideIntObj                      uintptr
	tcl_AllocStatBuf                       uintptr
	tcl_Seek                               uintptr
	tcl_Tell                               uintptr
	tcl_ChannelWideSeekProc                uintptr
	tcl_DictObjPut                         uintptr
	tcl_DictObjGet                         uintptr
	tcl_DictObjRemove                      uintptr
	tcl_DictObjSize                        uintptr
	tcl_DictObjFirst                       uintptr
	tcl_DictObjNext                        uintptr
	tcl_DictObjDone                        uintptr
	tcl_DictObjPutKeyList                  uintptr
	tcl_DictObjRemoveKeyList               uintptr
	tcl_NewDictObj                         uintptr
	tcl_DbNewDictObj                       uintptr
	tcl_RegisterConfig                     uintptr
	tcl_CreateNamespace                    uintptr
	tcl_DeleteNamespace                    uintptr
	tcl_AppendExportList                   uintptr
	tcl_Export                             uintptr
	tcl_Import                             uintptr
	tcl_ForgetImport                       uintptr
	tcl_GetCurrentNamespace                uintptr
	tcl_GetGlobalNamespace                 uintptr
	tcl_FindNamespace                      uintptr
	tcl_FindCommand                        uintptr
	tcl_GetCommandFromObj                  uintptr
	tcl_GetCommandFullName                 uintptr
	tcl_FSEvalFileEx                       uintptr
	tcl_SetExitProc                        uintptr
	tcl_LimitAddHandler                    uintptr
	tcl_LimitRemoveHandler                 uintptr
	tcl_LimitReady                         uintptr
	tcl_LimitCheck                         uintptr
	tcl_LimitExceeded                      uintptr
	tcl_LimitSetCommands                   uintptr
	tcl_LimitSetTime                       uintptr
	tcl_LimitSetGranularity                uintptr
	tcl_LimitTypeEnabled                   uintptr
	tcl_LimitTypeExceeded                  uintptr
	tcl_LimitTypeSet                       uintptr
	tcl_LimitTypeReset                     uintptr
	tcl_LimitGetCommands                   uintptr
	tcl_LimitGetTime                       uintptr
	tcl_LimitGetGranularity                uintptr
	tcl_SaveInterpState                    uintptr
	tcl_RestoreInterpState                 uintptr
	tcl_DiscardInterpState                 uintptr
	tcl_SetReturnOptions                   uintptr
	tcl_GetReturnOptions                   uintptr
	tcl_IsEnsemble                         uintptr
	tcl_CreateEnsemble                     uintptr
	tcl_FindEnsemble                       uintptr
	tcl_SetEnsembleSubcommandList          uintptr
	tcl_SetEnsembleMappingDict             uintptr
	tcl_SetEnsembleUnknownHandler          uintptr
	tcl_SetEnsembleFlags                   uintptr
	tcl_GetEnsembleSubcommandList          uintptr
	tcl_GetEnsembleMappingDict             uintptr
	tcl_GetEnsembleUnknownHandler          uintptr
	tcl_GetEnsembleFlags                   uintptr
	tcl_GetEnsembleNamespace               uintptr
	tcl_SetTimeProc                        uintptr
	tcl_QueryTimeProc                      uintptr
	tcl_ChannelThreadActionProc            uintptr
	tcl_NewBignumObj                       uintptr
	tcl_DbNewBignumObj                     uintptr
	tcl_SetBignumObj                       uintptr
	tcl_GetBignumFromObj                   uintptr
	tcl_TakeBignumFromObj                  uintptr
	tcl_TruncateChannel                    uintptr
	tcl_ChannelTruncateProc                uintptr
	tcl_SetChannelErrorInterp              uintptr
	tcl_GetChannelErrorInterp              uintptr
	tcl_SetChannelError                    uintptr
	tcl_GetChannelError                    uintptr
	tcl_InitBignumFromDouble               uintptr
	tcl_GetNamespaceUnknownHandler         uintptr
	tcl_SetNamespaceUnknownHandler         uintptr
	tcl_GetEncodingFromObj                 uintptr
	tcl_GetEncodingSearchPath              uintptr
	tcl_SetEncodingSearchPath              uintptr
	tcl_GetEncodingNameFromEnvironment     uintptr
	tcl_PkgRequireProc                     uintptr
	tcl_AppendObjToErrorInfo               uintptr
	tcl_AppendLimitedToObj                 uintptr
	tcl_Format                             uintptr
	tcl_AppendFormatToObj                  uintptr
	tcl_ObjPrintf                          uintptr
	tcl_AppendPrintfToObj                  uintptr
	tcl_CancelEval                         uintptr
	tcl_Canceled                           uintptr
	tcl_CreatePipe                         uintptr
	tcl_NRCreateCommand                    uintptr
	tcl_NREvalObj                          uintptr
	tcl_NREvalObjv                         uintptr
	tcl_NRCmdSwap                          uintptr
	tcl_NRAddCallback                      uintptr
	tcl_NRCallObjProc                      uintptr
	tcl_GetFSDeviceFromStat                uintptr
	tcl_GetFSInodeFromStat                 uintptr
	tcl_GetModeFromStat                    uintptr
	tcl_GetLinkCountFromStat               uintptr
	tcl_GetUserIdFromStat                  uintptr
	tcl_GetGroupIdFromStat                 uintptr
	tcl_GetDeviceTypeFromStat              uintptr
	tcl_GetAccessTimeFromStat              uintptr
	tcl_GetModificationTimeFromStat        uintptr
	tcl_GetChangeTimeFromStat              uintptr
	tcl_GetSizeFromStat                    uintptr
	tcl_GetBlocksFromStat                  uintptr
	tcl_GetBlockSizeFromStat               uintptr
	tcl_SetEnsembleParameterList           uintptr
	tcl_GetEnsembleParameterList           uintptr
	tcl_ParseArgsObjv                      uintptr
	tcl_GetErrorLine                       uintptr
	tcl_SetErrorLine                       uintptr
	tcl_TransferResult                     uintptr
	tcl_InterpActive                       uintptr
	tcl_BackgroundException                uintptr
	tcl_ZlibDeflate                        uintptr
	tcl_ZlibInflate                        uintptr
	tcl_ZlibCRC32                          uintptr
	tcl_ZlibAdler32                        uintptr
	tcl_ZlibStreamInit                     uintptr
	tcl_ZlibStreamGetCommandName           uintptr
	tcl_ZlibStreamEof                      uintptr
	tcl_ZlibStreamChecksum                 uintptr
	tcl_ZlibStreamPut                      uintptr
	tcl_ZlibStreamGet                      uintptr
	tcl_ZlibStreamClose                    uintptr
	tcl_ZlibStreamReset                    uintptr
	tcl_SetStartupScript                   uintptr
	tcl_GetStartupScript                   uintptr
	tcl_CloseEx                            uintptr
	tcl_NRExprObj                          uintptr
	tcl_NRSubstObj                         uintptr
	tcl_LoadFile                           uintptr
	tcl_FindSymbol                         uintptr
	tcl_FSUnloadFile                       uintptr
	tcl_ZlibStreamSetCompressionDictionary uintptr
	reserved631                            uintptr
	reserved632                            uintptr
	reserved633                            uintptr
	reserved634                            uintptr
	reserved635                            uintptr
	reserved636                            uintptr
	reserved637                            uintptr
	reserved638                            uintptr
	reserved639                            uintptr
	reserved640                            uintptr
	reserved641                            uintptr
	reserved642                            uintptr
	reserved643                            uintptr
	reserved644                            uintptr
	reserved645                            uintptr
	reserved646                            uintptr
	reserved647                            uintptr
	tclUnusedStubEntry                     uintptr
} /* tclDecls.h:2522:3 */

type POWERBROADCAST_SETTING = struct {
	PowerSetting GUID
	DataLength   DWORD
	Data         [1]UCHAR
	_            [3]byte
}                                      /* winuser.h:1268:5 */
type PPOWERBROADCAST_SETTING = uintptr /* winuser.h:1268:28 */

type HPOWERNOTIFY = HANDLE   /* winuser.h:2054:18 */
type PHPOWERNOTIFY = uintptr /* winuser.h:2055:24 */

var _dowildcard int32 = 0 /* tclAppInit.c:39:5 */

// The following #if block allows you to change how Tcl finds the startup
// script, prime the library or encoding paths, fiddle with the argv, etc.,
// without needing to rewrite Tcl_Main()

//----------------------------------------------------------------------
//
// main --
//
//	This is the main program for the application.
//
// Results:
//	None: Tcl_Main never returns here, so this procedure never returns
//	either.
//
// Side effects:
//	Just about anything, since from here we call arbitrary Tcl code.
//
//----------------------------------------------------------------------

func main1(tls *libc.TLS, argc int32, dummy uintptr) int32 { /* tclAppInit.c:88:1: */
	bp := tls.Alloc(8)
	defer tls.Free(8)
	*(*int32)(unsafe.Pointer(bp)) = argc

	// var argv uintptr at bp+4, 4

	var p uintptr

	// Set up the default locale to be standard "C" locale so parsing is
	// performed correctly.

	libc.Xsetlocale(tls, 0, ts+10640 /* "C" */)

	// Get our args from the c-runtime. Ignore command line.

	setargv(tls, bp /* &argc */, bp+4 /* &argv */)

	// Forward slashes substituted for backslashes.

	for p = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4 /* argv */)) + uintptr(0)*4)); int32(*(*TCHAR)(unsafe.Pointer(p))) != 0; p += 2 {
		if int32(*(*TCHAR)(unsafe.Pointer(p))) == '\\' {
			*(*TCHAR)(unsafe.Pointer(p)) = TCHAR('/')
		}
	}

	tcl.XTcl_MainExW(tls, *(*int32)(unsafe.Pointer(bp /* argc */)), *(*uintptr)(unsafe.Pointer(bp + 4 /* argv */)), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr) int32
	}{Tcl_AppInit})), tcl.XTcl_CreateInterp(tls))
	return 0 // Needed only to prevent compiler warning.
}

//----------------------------------------------------------------------
//
// Tcl_AppInit --
//
//	This procedure performs application-specific initialization. Most
//	applications, especially those that incorporate additional packages,
//	will have their own version of this procedure.
//
// Results:
//	Returns a standard Tcl completion code, and leaves an error message in
//	the interp's result if an error occurs.
//
// Side effects:
//	Depends on the startup script.
//
//----------------------------------------------------------------------

func Tcl_AppInit(tls *libc.TLS, interp uintptr) int32 { /* tclAppInit.c:155:1: */
	if tcl.XTcl_Init(tls, interp) == 1 {
		return 1
	}

	if Tcltest_Init(tls, interp) == 1 {
		return 1
	}
	tcl.XTcl_StaticPackage(tls, interp, ts+232 /* "Tcltest" */, *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr) int32
	}{Tcltest_Init})), *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr) int32
	}{Tcltest_SafeInit})))

	// Call the init procedures for included packages. Each call should look
	// like this:
	//
	// if (Mod_Init(interp) == TCL_ERROR) {
	//     return TCL_ERROR;
	// }
	//
	// where "Mod" is the name of the module. (Dynamically-loadable packages
	// should have the same entry-point name.)

	// Call Tcl_CreateCommand for application-specific commands, if they
	// weren't already created by the init procedures called above.

	// Specify a user-specific startup file to invoke if the application is
	// run interactively. Typically the startup file is "~/.apprc" where "app"
	// is the name of the application. If this line is deleted then no
	// user-specific startup file will be run under any conditions.

	tcl.XTcl_ObjSetVar2(tls, interp, tcl.XTcl_NewStringObj(tls, ts+1292 /* "tcl_rcFileName" */, -1), uintptr(0),
		tcl.XTcl_NewStringObj(tls, ts+10642 /* "~/tclshrc.tcl" */, -1), 1)
	return 0
}

//-------------------------------------------------------------------------
//
// setargv --
//
//	Parse the Windows command line string into argc/argv. Done here
//	because we don't trust the builtin argument parser in crt0. Windows
//	applications are responsible for breaking their command line into
//	arguments.
//
//	2N backslashes + quote -> N backslashes + begin quoted string
//	2N + 1 backslashes + quote -> literal
//	N backslashes + non-quote -> literal
//	quote + quote in a quoted string -> single quote
//	quote + quote not in quoted string -> empty string
//	quote -> begin quoted string
//
// Results:
//	Fills argcPtr with the number of arguments and argvPtr with the array
//	of arguments.
//
// Side effects:
//	Memory allocated.
//
//--------------------------------------------------------------------------

func setargv(tls *libc.TLS, argcPtr uintptr, argvPtr uintptr) { /* tclAppInit.c:239:1: */
	var cmdLine uintptr
	var p uintptr
	var arg uintptr
	var argSpace uintptr
	var argv uintptr
	var argc int32
	var size int32
	var inquote int32
	var copy int32
	var slashes int32

	cmdLine = libc.XGetCommandLineW(tls)

	// Precompute an overly pessimistic guess at the number of arguments in
	// the command line by counting non-space spans.

	size = 2
	for p = cmdLine; int32(*(*TCHAR)(unsafe.Pointer(p))) != 0; p += 2 {
		if int32(*(*TCHAR)(unsafe.Pointer(p))) == ' ' || int32(*(*TCHAR)(unsafe.Pointer(p))) == '\t' { // INTL: ISO space.
			size++
			for int32(*(*TCHAR)(unsafe.Pointer(p))) == ' ' || int32(*(*TCHAR)(unsafe.Pointer(p))) == '\t' { // INTL: ISO space.
				p += 2
			}
			if int32(*(*TCHAR)(unsafe.Pointer(p))) == 0 {
				break
			}
		}
	}

	// Make sure we don't call ckalloc through the (not yet initialized) stub table

	argSpace = tcl.XTcl_Alloc(tls, uint32(size)*uint32(unsafe.Sizeof(uintptr(0)))+libc.Xwcslen(tls, cmdLine)*size_t(unsafe.Sizeof(TCHAR(0)))+uint32(unsafe.Sizeof(TCHAR(0))))
	argv = argSpace
	argSpace += 2 * uintptr(uint32(size)*(uint32(unsafe.Sizeof(uintptr(0)))/uint32(unsafe.Sizeof(TCHAR(0)))))
	size--

	p = cmdLine
	for argc = 0; argc < size; argc++ {
		*(*uintptr)(unsafe.Pointer(argv + uintptr(argc)*4)) = libc.AssignUintptr(&arg, argSpace)
		for int32(*(*TCHAR)(unsafe.Pointer(p))) == ' ' || int32(*(*TCHAR)(unsafe.Pointer(p))) == '\t' { // INTL: ISO space.
			p += 2
		}
		if int32(*(*TCHAR)(unsafe.Pointer(p))) == 0 {
			break
		}

		inquote = 0
		slashes = 0
		for 1 != 0 {
			copy = 1
			for int32(*(*TCHAR)(unsafe.Pointer(p))) == '\\' {
				slashes++
				p += 2
			}
			if int32(*(*TCHAR)(unsafe.Pointer(p))) == '"' {
				if slashes&1 == 0 {
					copy = 0
					if inquote != 0 && int32(*(*TCHAR)(unsafe.Pointer(p + uintptr(1)*2))) == '"' {
						p += 2
						copy = 1
					} else {
						inquote = libc.BoolInt32(!(inquote != 0))
					}
				}
				slashes >>= 1
			}

			for slashes != 0 {
				*(*TCHAR)(unsafe.Pointer(arg)) = TCHAR('\\')
				arg += 2
				slashes--
			}

			if int32(*(*TCHAR)(unsafe.Pointer(p))) == 0 || !(inquote != 0) && (int32(*(*TCHAR)(unsafe.Pointer(p))) == ' ' || int32(*(*TCHAR)(unsafe.Pointer(p))) == '\t') { // INTL: ISO space.
				break
			}
			if copy != 0 {
				*(*TCHAR)(unsafe.Pointer(arg)) = *(*TCHAR)(unsafe.Pointer(p))
				arg += 2
			}
			p += 2
		}
		*(*TCHAR)(unsafe.Pointer(arg)) = TCHAR(0)
		argSpace = arg + uintptr(1)*2
	}
	*(*uintptr)(unsafe.Pointer(argv + uintptr(argc)*4)) = uintptr(0)

	*(*int32)(unsafe.Pointer(argcPtr)) = argc
	*(*uintptr)(unsafe.Pointer(argvPtr)) = argv
}

// Local Variables:
// mode: c
// c-basic-offset: 4
// fill-column: 78
// End:

func init() {
	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&commands)) + 0 /* .cmdName */)) = uintptr(unsafe.Pointer(&procCommand))                                                  // tclTestProcBodyObj.c:62:7:
	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&commands)) + 4)) = ProcBodyTestProcObjCmd                             // tclTestProcBodyObj.c:62:20:
	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&commands)) + 12 /* .cmdName */)) = uintptr(unsafe.Pointer(&checkCommand))                                                // tclTestProcBodyObj.c:63:7:
	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&commands)) + 16)) = ProcBodyTestCheckObjCmd                           // tclTestProcBodyObj.c:63:21:
	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&safeCommands)) + 0 /* .cmdName */)) = uintptr(unsafe.Pointer(&procCommand))                                              // tclTestProcBodyObj.c:68:7:
	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&safeCommands)) + 4)) = ProcBodyTestProcObjCmd                         // tclTestProcBodyObj.c:68:20:
	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&safeCommands)) + 12 /* .cmdName */)) = uintptr(unsafe.Pointer(&checkCommand))                                            // tclTestProcBodyObj.c:69:7:
	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&safeCommands)) + 16)) = ProcBodyTestCheckObjCmd                       // tclTestProcBodyObj.c:69:21:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 12)) = SimplePathInFilesystem                                       // tclTest.c:480:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 44)) = SimpleStat                                                   // tclTest.c:494:5:
	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 48)) = SimpleAccess                                                   // tclTest.c:495:5:
	*(*func(*libc.TLS, uintptr, uintptr, int32, int32) Tcl_Channel)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 52)) = SimpleOpenFileChannel                    // tclTest.c:496:5:
	*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 56)) = SimpleMatchInDirectory            // tclTest.c:497:5:
	*(*func(*libc.TLS) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&simpleFilesystem)) + 68)) = SimpleListVolumes                                                            // tclTest.c:501:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 12)) = TestReportInFilesystem                                // tclTest.c:446:5:
	*(*func(*libc.TLS, ClientData) ClientData)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 16)) = TestReportDupInternalRep                               // tclTest.c:447:5:
	*(*func(*libc.TLS, ClientData))(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 20)) = TestReportFreeInternalRep                                         // tclTest.c:448:5:
	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 32)) = TestReportNormalizePath                        // tclTest.c:451:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 44)) = TestReportStat                                        // tclTest.c:454:5:
	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 48)) = TestReportAccess                                        // tclTest.c:455:5:
	*(*func(*libc.TLS, uintptr, uintptr, int32, int32) Tcl_Channel)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 52)) = TestReportOpenFileChannel         // tclTest.c:456:5:
	*(*func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 56)) = TestReportMatchInDirectory // tclTest.c:457:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 60)) = TestReportUtime                                       // tclTest.c:458:5:
	*(*func(*libc.TLS, uintptr, uintptr, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 64)) = TestReportLink                               // tclTest.c:459:5:
	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 72)) = TestReportFileAttrStrings                           // tclTest.c:461:5:
	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 76)) = TestReportFileAttrsGet                // tclTest.c:462:5:
	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 80)) = TestReportFileAttrsSet                // tclTest.c:463:5:
	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 84)) = TestReportCreateDirectory                                      // tclTest.c:464:5:
	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 88)) = TestReportRemoveDirectory                      // tclTest.c:465:5:
	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 92)) = TestReportDeleteFile                                           // tclTest.c:466:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 96)) = TestReportCopyFile                                    // tclTest.c:467:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 100)) = TestReportRenameFile                                 // tclTest.c:468:5:
	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 104)) = TestReportCopyDirectory                     // tclTest.c:469:5:
	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 108)) = TestReportLstat                                      // tclTest.c:470:5:
	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 112 /* .loadFileProc */)) = *(*uintptr)(unsafe.Pointer(&struct {
		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
	}{TestReportLoadFile})) // tclTest.c:471:5:
	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testReportingFilesystem)) + 120)) = TestReportChdir // tclTest.c:473:5:
}

var ts1 = "TclOO\x00missing stub table pointer\x00Error loading \x00 (requested version \x00, actual version \x00): \x00interpreter uses an incompatible stubs mechanism\x00Tcl\x00tcl::tommath\x00epoch number mismatch\x00requires a later revision\x00reporting\x00simple\x008.5\x001.1.0\x00Tcltest\x008.6.10\x00gettimes\x00noop\x00testpurebytesobj\x00testbytestring\x00testwrongnumargs\x00testfilesystem\x00testsimplefilesystem\x00testgetindexfromobjstruct\x00testasync\x00testbumpinterpepoch\x00testchannel\x00testchannelevent\x00testcmdtoken\x00testcmdinfo\x00testcmdtrace\x00testconcatobj\x00testcreatecommand\x00testdcall\x00testdel\x00testdelassocdata\x00testdoubledigits\x00testdstring\x00testencoding\x00testevalex\x00testevalobjv\x00testevent\x00testexithandler\x00testexprlong\x00testexprlongobj\x00testexprdouble\x00testexprdoubleobj\x00testexprparser\x00testexprstring\x00testfevent\x00testfilelink\x00testfile\x00testhashsystemhash\x00testgetassocdata\x00testgetint\x00testgetplatform\x00testgetvarfullname\x00testinterpdelete\x00testlink\x00testlocale\x00testpanic\x00testparseargs\x00testparser\x00testparsevar\x00testparsevarname\x00testregexp\x00testreturn\x00testsaveresult\x00testsetassocdata\x00testsetnoerr\x00testseterr\x00testset2\x00testseterrorcode\x00testsetobjerrorcode\x00testnumutfchars\x00testfindfirst\x00testfindlast\x00testsetplatform\x00teststaticpkg\x00testtranslatefilename\x00testupvar\x00T1\x00T2\x00testmainthread\x00testsetmainloop\x00testexitmainloop\x00testcpuid\x00T3\x00testnreunwind\x00testnrelevels\x00testinterpresolver\x00argv\x00stderr\x00tcl_rcFileName\x00-appinitprocerror\x00-appinitprocdeleteinterp\x00-appinitprocclosestderr\x00-appinitprocsetrcfile\x00wrong # args\x00create\x00delete\x00mark\x00bad option \"\x00\": must be create, delete, int, or mark\x00\x00wrong # args: should be \"\x00 option cmdName\"\x00original\x00get\x00??\x00CmdProc1\x00 \x00CmdProc2\x00unknown\x00 CmdDelProc1\x00 CmdDelProc2\x00 unknown\x00 nativeObjectProc\x00 stringProc\x00modify\x00new_command_data\x00new_delete_data\x00\": must be create, delete, get, or modify\x00CmdProc1 \x00CmdProc2 \x00CmdDelProc1 \x00CmdDelProc2 \x00 option arg\"\x00%p\x00name\x00bad command token \"\x00\"\x00\": must be create or name\x00 option script\"\x00tracetest\x00deletetest\x00leveltest\x00resulttest\x00Delete wasn't called\x00doubletest\x00\": must be tracetest, deletetest, doubletest or resulttest\x00Error\x00Break\x00Continue\x00Return\x00OtherStatus\x00 option\"\x00test_ns_basic::createdcommand\x00create2\x00value:at:\x00delete2\x00\": must be create, delete, create2, or delete2\x00CreatedCommandProc could not get command info for test_ns_basic::createdcommand\x00CreatedCommandProc in \x00CreatedCommandProc2 could not get command info for test_ns_basic::createdcommand\x00CreatedCommandProc2 in \x00bogus interpreter argument!\x00wrong # arguments: should be \"\x00 data_key\"\x00fpval ndigits type ?shorten?\x00double\x00conversion type\x00bad value? %g\n\x00shorten\x00bad flag\x00-\x00+\x00shortest\x00Steele\x00e\x00f\x00append\x00element\x00end\x00free\x00gresult\x00staticsmall\x00short\x00staticlarge\x00first0 first1 first2 first3 first4 first5 first6 first7 first8 first9\nsecond0 second1 second2 second3 second4 second5 second6 second7 second8 second9\nthird0 third1 third2 third3 third4 third5 third6 third7 third8 third9\nfourth0 fourth1 fourth2 fourth3 fourth4 fourth5 fourth6 fourth7 fourth8 fourth9\nfifth0 fifth1 fifth2 fifth3 fifth4 fifth5 fifth6 fifth7 fifth8 fifth9\nsixth0 sixth1 sixth2 sixth3 sixth4 sixth5 sixth6 sixth7 sixth8 sixth9\nseventh0 seventh1 seventh2 seventh3 seventh4 seventh5 seventh6 seventh7 seventh8 seventh9\n\x00This is a malloc-ed string\x00special\x00This is a specially-allocated string\x00bad gresult option \"\x00\": must be staticsmall, staticlarge, free, or special\x00length\x00result\x00trunc\x00start\x00\": must be append, element, end, free, get, length, result, trunc, or start\x00option\x00global\x00bad value \"\x00\": must be global\x00script ?global?\x00global word ?word ...?\x00subcommand ?arg ...?\x00subcommand\x00name position script\x00position specifier\x00queue\x00head\x00tail\x00    (command bound to \"testevent\" callback)\x00    (return value from \"testevent\" callback)\x00 create|delete value\"\x00\": must be create or delete\x00odd %d\n\x00ExitProcOdd: unable to write to stdout\x00even %d\n\x00ExitProcEven: unable to write to stdout\x00 expression\"\x00This is a result\x00: %ld\x00expression\x00: \x00source ?target?\x00could not create link from \"\x00\" to \"\x00\": \x00could not read link \"\x00unix\x00mac\x00windows\x00 path\"\x00 option ?arg arg arg arg arg arg arg arg arg arg arg arg arg arg?\"\x00 intRO realRO boolRO stringRO wideRO charRO ucharRO shortRO ushortRO uintRO longRO ulongRO floatRO uwideRO\"\x00int\x00real\x00bool\x00string\x00wide\x00char\x00uchar\x00ushort\x00uint\x00long\x00ulong\x00float\x00uwide\x00set\x00 intValue realValue boolValue stringValue wideValue charValue ucharValue shortValue ushortValue uintValue longValue ulongValue floatValue uwideValue\"\x00update\x00\": should be create, delete, get, set, or update\x00category ?locale?\x00ctype\x00numeric\x00time\x00collate\x00monetary\x00all\x00T3: wrong type for arg 2\x00T3: wrong type for arg 1\x00script length\x00\n    (remainder of script: \"\x00\")\x00expr length\x00\n    (remainder of expr: \"\x00expand\x00word\x00text\x00backslash\x00command\x00variable\x00subexpr\x00operator\x00varName\x00script length append\x00switch\x00?-switch ...? exp string ?matchVar? ?subMatchVar ...?\x00%d %d\x00couldn't set variable \"\x00%ld\x00-indices\x00-nocase\x00-about\x00-expanded\x00-line\x00-linestop\x00-lineanchor\x00-xflags\x00--\x00 data_key data_item\"\x00 platform\"\x00unsupported platform: should be one of unix, or windows\x00 pkgName safe loaded\"\x00x\x00loaded\x00 level name ?name2? dest global\"\x00namespace\x00too many args\x00NONE\x00 option ?arg ...?\x00cmd\x00 cmd script\x00called \"testfevent code\" before \"testfevent create\"\x00share\x00%s\x00-force\x00mv\x00cp\x00rm\x00mkdir\x00cpdir\x00rmdir\x00name scope\x00::test_ns_var\x00alloc & free 100000 6 word items\n\x00   %.3f usec per alloc+free\n\x00alloc 5000 6 word items\n\x00   %.3f usec per alloc\n\x00free 5000 6 word items\n\x00   %.3f usec per free\n\x00Tcl_NewObj 5000 times\n\x00   %.3f usec per Tcl_NewObj\n\x00Tcl_DecrRefCount 5000 times\n\x00   %.3f usec per Tcl_DecrRefCount\n\x00TclGetStringFromObj of \"12345\" 100000 times\n\x0012345\x00   %.3f usec per TclGetStringFromObj of \"12345\"\n\x00Tcl_GetIntFromObj of \"12345\" 100000 times\n\x00   %.3f usec per Tcl_GetIntFromObj of \"12345\"\n\x00Tcl_GetInt of \"12345\" 100000 times\n\x00   %.3f usec per Tcl_GetInt of \"12345\"\n\x00sprintf of 12345 100000 times\n\x00%d\x00   %.3f usec per sprintf of 12345\n\x00hashtable lookup of \"gettimes\" 100000 times\n\x00   %.3f usec per hashtable lookup of \"gettimes\"\n\x00Tcl_SetVar of \"12345\" 100000 times\n\x00a\x00   %.3f usec per Tcl_SetVar of a to \"12345\"\n\x00Tcl_GetVar of a==\"12345\" 100000 times\n\x00   %.3f usec per Tcl_GetVar of a==\"12345\"\n\x00?string?\x00bytearray\x00before get\x00before set\x00 varName ?newValue?\"\x00 varName elemName ?newValue?\"\x00type script discard\x00small result\x00append result\x00free result\x00dynamic result\x00object result\x00called\x00notCalled\x00present\x00missing\x00same\x00different\x00dynamic\x00object\x00small\x00Exit MainLoop\n\x00 subcommand ?additional args..?\"\x00splice\x00setchannelerror\x00setchannelerrorinterp\x00cut\x00 cut channelName\"\x00clearchannelhandlers\x00 clearchannelhandlers channelName\"\x00info\x00 info channelName\"\x00read\x00write\x00nonblocking\x00blocking\x00line\x00none\x00full\x00async_flush\x00eof\x00blocked\x00unblocked\x00auto\x00saw_cr\x00lf\x00cr\x00crlf\x00queued_cr\x00inputbuffered\x00channel name required\x00isshared\x00isstandard\x00mode\x00mthread\x00open\x00tclIO\x00outputbuffered\x00queuedcr\x001\x000\x00readable\x00refcount\x00type\x00writable\x00transform\x00 transform channelId -command cmd\"\x00-command\x00bad argument \"\x00\": should be \"-command\"\x00unstack\x00 unstack channel\"\x00\": should be cut, clearchannelhandlers, info, isshared, mode, open, readable, splice, writable, transform, unstack\x00 channelName cmd ?arg1? ?arg2?\"\x00add\x00 channelName add eventSpec script\"\x00bad event name \"\x00\": must be readable, writable, or none\x00 channelName delete index\"\x00bad event index: \x00: must be nonnegative\x00bad event index \x00: out of range\x00TestChannelEventCmd: damaged event script list\x00list\x00 channelName list\"\x00removeall\x00 channelName removeall\"\x00 channelName delete index event\"\x00bad command \x00, must be one of add, delete, list, set, or removeall\x00insufficient arguments\x00b\x00c\x00d\x00argument targetvalue\x00dummy\x00index value comparison failed: got \x00 when \x00 expected\x00boolean\x00registered\x00failed\x00unregistered\x00lappend filesystemReport \x00stat\x00lstat\x00access\x00matchmounts\x00matchindirectory\x00chdir\x00loadfile\x00link\x00renamefile\x00copyfile\x00deletefile\x00createdirectory\x00copydirectory\x00removedirectory\x00fileattributestrings\x00fileattributesget\x00fileattributesset\x00utime\x00normalizepath\x00simplefs:/\x00read-only\x00r\x00eax\x00operation not available\x00non-zero initial size\x00 creation problem\x00unexpected maximal size\x00 lookup problem\x00 value problem\x00non-zero final size\x00OK\x00Tcl_ConcatObj is unsafe:\x00foo bar sum\x00eeny meeny\x00\n\t* (a) concatObj does not have refCount 0\x00\n\t* (a) concatObj is not a new obj \x00(no new refCount)\x00(refCount added)\x00(more than one refCount added!)\x00extremely unsafe behaviour by Tcl_ConcatObj()\x00\n\t* (b) concatObj does not have refCount 0\x00\n\t* (b) concatObj is not a new obj \x00(refCount removed?)\x00\n\t* (c) concatObj does not have refCount 0\x00\n\t* (c) concatObj is not a new obj \x00\n\t* (d) concatObj does not have refCount 0\x00\n\t* (d) concatObj is not a new obj \x00\n\t* (e) concatObj does not have refCount 0\x00\n\t* (e) concatObj is not a new obj \x00(failed to concat)\x00(corrupted input!)\x00\n\t* (f) concatObj does not have refCount 0\x00\n\t* (f) concatObj is not a new obj \x00\n\t* (g) concatObj does not have refCount 0\x00\n\t* (g) concatObj is not a new obj \x00-bool\x00booltest\x00Marks the end of the options\x00-help\x00Print summary of command-line options and abort\x00::ns2\x00y\x00(NULL)\x00ctx1\x00ctx2\x00Y\x00up|down ?interp?\x00provided interpreter not found\x00operation\x00testInterpResolver\x00could not remove the resolver scheme\x00down\x00up\x00TCLOBJTEST_VARPTR\x00testbignumobj\x00testbooleanobj\x00testdoubleobj\x00testintobj\x00testindexobj\x00testlistobj\x00testobj\x00teststringobj\x00mult10\x00div10\x00iseven\x00radixsize\x00option ?arg ...?\x00var value\x00error in mp_init\x00error in mp_read_radix\x00varIndex\x00error in mp_mul_d\x00error in mp_div_d\x00option arg ?arg ...?\x00not\x00\": must be set, get, or not\x00\": must be set, get, mult10, or div10\x00check\x00token\x00index\x00set2\x00setlong\x00setmaxlong\x00ismaxlong\x00get2\x00inttoobigtest\x00\": must be set, get, get2, mult10, or div10\x00replace\x00option arg ?arg...?\x00varIndex start count ?element...?\x00assign\x00bug3598580\x00convert\x00no type \x00 found\x00duplicate\x00freeallvars\x00invalidateStringRep\x00newobj\x00objtype\x00types\x00\": must be assign, convert, duplicate, freeallvars, newobj, objcount, objtype, refcount, type, or types\x00index value out of range\x00appendstrings\x00length2\x00setlength\x00maxchars\x00getunicode\x00appendself\x00appendself2\x00bad variable index\x00variable %d is unset (NULL)\x00procbodytest\x001.1\x00proc\x00namespace eval %s { namespace export %s }\x00%s::%s\x00newName argsList bodyName\x00command \"\x00\" is not a Tcl procedure\x00procedure \"\x00\" does not have a Proc struct!\x00failed to create a procbody object for procedure \"\x00testchmod\x00testeventloop\x00testvolumetype\x00testwinclock\x00testwinsleep\x00testexcept\x00testsize\x00option ...\x00done\x00wait\x00\": must be done or wait\x00?name?\x00could not get volume type for \"\x00ms\x00time_t\x00st_mtime\x00time_t|st_mtime\x00<type-of-exception>\x00access_violation\x00datatype_misalignment\x00array_bounds\x00float_denormal\x00float_divbyzero\x00float_inexact\x00float_invalidop\x00float_overflow\x00float_stack\x00float_underflow\x00int_divbyzero\x00int_overflow\x00private_instruction\x00inpageerror\x00illegal_instruction\x00noncontinue\x00stack_overflow\x00invalid_disp\x00guard_page\x00invalid_handle\x00ctrl+c\x00mode file ?file ...?\x00C\x00~/tclshrc.tcl\x00"
var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data
