// Code generated by 'ccgo -D__printf__=printf -all-errors -err-trace -pkgname tclsh -trace-translation-units -lmodernc.org/tcl/lib -o /home/jnml/src/modernc.org/tcl/internal/tclsh/tclsh_windows_386.go -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 tclAppInit.c -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 -DSTATIC_BUILD -DBUILD_tcl -DUNICODE -D_UNICODE -DCFG_INSTALL_LIBDIR="" -DCFG_INSTALL_BINDIR="" -DCFG_INSTALL_SCRDIR="" -DCFG_INSTALL_INCDIR="" -DCFG_INSTALL_DOCDIR="/usr/local/man" -DCFG_RUNTIME_LIBDIR="/usr/local/lib" -DCFG_RUNTIME_BINDIR="/usr/local/bin" -DCFG_RUNTIME_SCRDIR="/usr/local/lib/tcl8.6" -DCFG_RUNTIME_INCDIR="/usr/local/include" -DCFG_RUNTIME_DOCDIR="/usr/local/man" -UHAVE_CAST_TO_UNION', DO NOT EDIT.

package tclsh

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

// 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
)

// *
// 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 ( /* sysinfoapi.h:70:3: */
	ComputerNameNetBIOS                   = 0
	ComputerNameDnsHostname               = 1
	ComputerNameDnsDomain                 = 2
	ComputerNameDnsFullyQualified         = 3
	ComputerNamePhysicalNetBIOS           = 4
	ComputerNamePhysicalDnsHostname       = 5
	ComputerNamePhysicalDnsDomain         = 6
	ComputerNamePhysicalDnsFullyQualified = 7
	ComputerNameMax                       = 8
)

// 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 ( /* 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
)

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 = int32 /* crtdefs.h:136: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:422:1 */

type threadlocinfo = threadlocaleinfostruct /* crtdefs.h:468: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.

// 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.

//----------------------------------------------------------------------------
// 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>

// 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>

// 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.

type CHAR = int8   /* tcl.h:315:14 */
type SHORT = int16 /* tcl.h:316:15 */
type LONG = int32  /* tcl.h:317:14 */

// 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 _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 */

// The next short section of defines are only done when not running on Windows
// or some other strange platform.

type Tcl_StatBuf = _stati64 /* tcl.h:446:26 */

//----------------------------------------------------------------------------
// 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 = 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 stat = 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 time_t
	st_mtime time_t
	st_ctime time_t
} /* tcl.h:645:9 */

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 */
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 TclStubHooks = struct {
	tclPlatStubs    uintptr
	tclIntStubs     uintptr
	tclIntPlatStubs uintptr
} /* tclDecls.h:1843:3 */

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:1845:9 */

type TclStubs = TclStubs1 /* tclDecls.h:2522:3 */

// Deprecated Tcl procedures:

// Include platform specific public function declarations that are accessible
// via the stubs table. Make all TclOO symbols MODULE_SCOPE (which only
// has effect on building it as a shared library). See ticket [3010352].

// tclPlatDecls.h --
//
//	Declarations of platform specific Tcl APIs.
//
// Copyright (c) 1998-1999 by Scriptics Corporation.
// All rights reserved.

// WARNING: This file is automatically generated by the tools/genStubs.tcl
// script.  Any modifications to the function declarations below should be made
// in the generic/tcl.decls script.

// TCHAR is needed here for win32, so if it is not defined yet do it here.
// This way, we don't need to include <tchar.h> just for one define.
type TCHAR = wchar_t /* tclPlatDecls.h:36:18 */

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.

// *
// 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.

// _WIN32_WINNT

// _WIN32_IE

// Mappings Between IE Version  and Windows Version

// NTDDI_VERSION

// Version Fields in NTDDI_VERSION

// Macros to Extract Version Fields From NTDDI_VERSION

// Macros to get the NTDDI for a given WIN32

// Select Default WIN32_WINNT Value

// Choose NTDDI Version

// Choose WINVER Value

// Choose IE Version

// Make Sure NTDDI_VERSION and _WIN32_WINNT Match

// Some kludge for Obj-C.
//    For Obj-C the 'interface' is a keyword, but interface is used
//    in midl-code too.  To resolve this conflict for at least the
//    main windows API header, we define it here temporary.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This 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_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>

// 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.

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This 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 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 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 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 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 HPOWERNOTIFY = HANDLE   /* winuser.h:2054:18 */
type PHPOWERNOTIFY = uintptr /* winuser.h:2055:24 */

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 */

// *
// This file has no copyright assigned and is placed in the Public Domain.
// This 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 */

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 _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.

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 main(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 /* "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
	}

	// 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+2 /* "tcl_rcFileName" */, -1), uintptr(0),
		tcl.XTcl_NewStringObj(tls, ts+17 /* "~/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:

var ts1 = "C\x00tcl_rcFileName\x00~/tclshrc.tcl\x00"
var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data
